地图API的选择和使用
在我们程序员的日常开发中,总会时不时的需要用到地图开发,我也在多次碰到之后,写下我对地图开发的理解经验和总结。
一、地图的选择
回想一下我们生活中用到的地图工具,数了一下,百度地图,高德地图,腾讯地图,谷歌地图,其他。
1、作为开发者,我们应该选择普遍被大众认可的地图平台,所以其他这个选项中,除去最近或以后火起来的地图平台外,我把它们排除掉。
2、谷歌这个被国家禁掉的产品,如果不是需要覆盖全世界的产品或项目的开发,我们应该选择国产。而随着我们的国产软件也走出了祖国走向了全世界,我果断的排除了谷歌地图,虽然对于全世界来讲是最牛逼的产品,但是反正我不FQ的情况下打不开谷歌地图开发平台,而且对于国内来讲,地图也没有国产的详细。
3、剩下三个地图,我只想说,如果是跟腾讯有关的开发,还是用腾讯地图好一点吧,虽然接口有点少。
4、其实呢,这几家竞争这么激烈,我觉得嘛,就看个人喜欢了,不同的地图都有它们的特色,它们各自提供了一些除了正常使用之外的特别的功能。
二、地图API的选择
以百度,高德,腾讯为例,开发文档分为四类,web开发,Android开发,ios开发,web服务。
1、就分类来讲中间那两个是手机应用开发,不同的手机类型选择对应的SDK,左边那个网站开发,前端就选这个,右边那个是特殊服务,相当于其他。
2、右边那个里面有个web服务API是数据接口,我搞了很久才区别出来,这是个纯粹的接口,提供一个url,返回json或xml格式的数据(腾讯只支持json/jsonp),不管什么语言什么软件都能用。
3、URI API可直接调用地图的相关功能或打开对应手机地图APP,百度地图的这个API藏在 地图调起API 分类里面。
4、对于微信小程序开发,腾讯有个sdk,百度有个api,高德没有这个。
5、注意一下地图提供的工具支持,比如坐标拾取器等,开发的时候可以配合使用。
三、地图API的使用
在这里呢,我只讲js api和web service api,手机应用开发还没有接触到,所以sdk我用不上,你们自己去官网学吧。
不管什么公司提供的地图,要想使用它,首先就是要获取密钥,这个按照提示步骤操作即可。
先讲JavaScript API:
1、使用须知
①只要是浏览器打开,就能用这个。设备屏幕不一样,为避免缩放冲突,建议添加meta标签禁止用户缩放页面:
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
②兼容性良好,这个不需要担心
③JavaScript API支持异步加载
2、需要一个容器放置地图,容器必须要有宽高且不能为0(为0的话就看不到地图了),然后需要引入百度地图API文件,创建地图实例
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
<div id="container" style='width:100px;height:100px;'></div>
var map = new BMap.Map("container");
3、http://lbsyun.baidu.com/jsdemo.htm#a1_2 ——地图API示例,找到你要的功能,直接复制就能用
4、百度地图用到坐标的时候需要进行坐标转换,因为百度地图的坐标系(BD09)是自己对GCJ02(火星坐标系)再次加密的坐标系。不过非中国地区的地图,服务坐标统一使用WGS84(GPS的坐标)
5、简单说一下都有哪些功能:
①就是一个地图展示,给地图添加控件,给地图修改样式(个性化地图),右键菜单功能,全景功能,搜索功能
②就是在这个地图上绘画,标注,信息窗口,或者就是一个覆盖物(形状,图片,文字什么的),一个叠加的图层
③地图上的事件,点击事件,图块加载完成事件,给覆盖物注册事件,注销事件,鼠标事件……(貌似没有键盘事件)
④GPS功能,定位功能,路线规划功能(分为公交,驾车,步行三种)
⑤数据处理类的辅助功能,比如地址解析(名称--坐标),坐标转换,点聚合(多点缩放时堆叠在一起可以合并为一个聚合点来表示这一块有的点数)
⑥其他
Web 服务API:
这个api跟Javascript API不一样,前面讲过,这个是一个数据接口,也就是说,它给我们的功能提供一个url和参数,我们前端可以通过ajax请求拿到数据并进行操作。
而像Javascript API那样的,是直接前端操作,除了引入的那个js文件外,不暴露任何url接口,全都是要用实例化一个对象并通过其内部方法的方式操作。
1、地点检索服务
①行政区划区域检索
开发者可通过该功能,检索某一行政区划内(目前最细到城市级别)的地点信息。
例:
http://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=您的ak //GET请求
②圆形区域检索
③矩形区域检索
④地点详情检索
2、地点输入提示服务
3、正/逆地理编码服务
4、路线规划
5、批量算路
6、普通IP定位API
7、时区服务
8、推荐上车点服务
9、静态图API,全景静态图API
10、附录
四、链接分享
1、http://lbsyun.baidu.com/ ——百度地图开放平台
2、http://lbs.amap.com/ ——高德开放平台
3、http://lbs.qq.com/index.html ——腾讯位置服务
地图API的选择和使用的更多相关文章
- [转] 一个程序猿眼中的国内主流地图api
在网站或者手机应用中,经常用到地图api.在现在这么激烈的竞争下,各地图服务提供的服务基本都趋于一致了.一个公司推出的新服务,其他公司肯定也会很快的跟进.这样,对于开发者来说,地图api的选择就主要参 ...
- 【百度地图API】让用户选择起点和终点的驾车导航
原文:[百度地图API]让用户选择起点和终点的驾车导航 摘要: 如果用户搜索“从机场到火车站”,使用驾车导航DrivingRoute会默认显示一条结果.但同一个城市可能有多个机场和火车站,那么,如何用 ...
- 百度地图API 批量添加 带检索功能的信息窗口
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 百度地图API试用--(初次尝试)
2016-03-17: 百度地图API申请key的步骤相对简单,不做过多阐述. 初次使用百度地图API感觉有点神奇,有些功能加进来以后有点问题,注释掉等有空再解决. 代码如下: <%@ page ...
- Google 地图 API V3 针对移动设备进行开发
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- Google 地图 API V3 之控件
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- 如何在网页中调用百度地图api
我想在木有提供地图接口的年代,前端工程师门要么只写上企业的具体地址,要么就是用一张标有自己位置的地图图片.但是现在不一样啦!为了增强用户体验,谷歌,甚至百度都很开放了,你可以在他们的网站上找到地图接口 ...
- 地图API文档
目录 腾讯地图API 2 1.API概览... 2 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 2 1.2 URL API:... 2 1.3 静态图AP ...
- C#调用百度地图API经验分享(一)
最近客户提了一个需求,要在网站中添加百度地图的显示,其实原来是有谷歌地图的,但由于谷歌在大陆遭到封杀,只好再给用户增加一个选择了. 下面我将自己最近整理的一些知识分享给大家. 如何使用百度地图API: ...
随机推荐
- MR案例:WordCount改写
请参照wordcount实现一个自己的MapReduce,需求为: a. 输入文件格式: xxx,xxx,xxx,xxx,xxx,xxx,xxx b. 输出文件格式: ...
- java和groovy的混用
java在语言的动态性方便不是很灵活,如果你想快速增加或改变一些方法,那么只能通过反射机制,并且参数传递的格式很严格. 相比之下,基于groovy可以快速写出一些自定义方法,并能和java很好结合,类 ...
- 从0开始 数据结构 AC自动机 hdu 2222
参考博客 失配指针原理 使当前字符失配时跳转到另一段从root开始每一个字符都与当前已匹配字符段某一个后缀完全相同且长度最大的位置继续匹配,如同KMP算法一样,AC自动机在匹配时如果当前字符串匹配失败 ...
- python 这个stdin怎么写
!/usr/bin/env python -- coding: utf-8 -- import json import pprint import sys reload(sys) sys.setdef ...
- 深入理解Java枚举类型(enum)
https://blog.csdn.net/javazejian/article/details/71333103 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(en ...
- JavaScript高级程序设计-读书笔记(2)
第6章 面向对象的程序设计 创建对象 1.最简单方式创建Object的实例,如 var person = new Object(); person.name = “Greg”; person.age ...
- Apache的MaxClients设置
本文将介绍Apache的MaxClients参数的重要性以及在GC发生时对系统整体性能的显著影响.通过几个例子,你将会更清晰的理解MaxClients值所引发的问题.最后会介绍如何依据系统的可用内存来 ...
- sass的多种用法
sass的多种用法 主要归纳总结sass的常见用法,作为个人笔记使用,部分知识点并不仔细讲解.具体可参考文档:sass官网 一.嵌套 .svg{ position: absolute; left: 0 ...
- Nordic官方网络资源介绍(官网/devzone/GitHub)
本文将介绍Nordic官方网络资源,包括Nordic官网,开发者论坛(devzone),以及Nordic在GitHub上的共享资源. 1. Nordic官网(产品/SDK/工具/文档库) Nordic ...
- Python+Opencv进行识别相似图片
http://blog.csdn.net/feimengjuan/article/details/51279629