在我们程序员的日常开发中,总会时不时的需要用到地图开发,我也在多次碰到之后,写下我对地图开发的理解经验和总结。
一、地图的选择
回想一下我们生活中用到的地图工具,数了一下,百度地图,高德地图,腾讯地图,谷歌地图,其他。
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 ——腾讯位置服务