地图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: ...
随机推荐
- php-fpm 信号
使用信号之前,需要先确保php-fpm.conf 里面有配置pid,默认是被注释掉的. ;pid = run/php-fpm.pid 文件在 php安装目录/var/run/php-fpm.pid 信 ...
- 【纯代码】Swift - 自定义底部弹窗基类(可根据需要自行扩展内容)
//弹窗视图 class PopView : UIView { var selectButtonCallBack:((_ title:String)-> Void)? var contenVie ...
- 资源 | TensorFlow推出新工具Seedbank:即刻使用的预训练模型库【转】
本文转载自:http://tech.ifeng.com/a/20180713/45062331_0.shtml 选自TensorFlow 作者:Michael Tyka 机器之心编译 参与:路.王淑婷 ...
- python-高阶函数和闭包
高阶函数:把函数作为参数传入,这样的函数成为高阶函数. 高阶函数,higher-order function Abs()内置函数:绝对值 函数名是什么:指向函数的变量 传入函数 一个函数的参数是否可以 ...
- PHP 根据IP地址获取所在城市
header('Content-Type:text/html;Charset=utf-8'); function GetIp(){ $realip = ''; $unknown = 'unknown' ...
- scala中的高阶函数
版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=332 排版乱?请移步原文获得更好阅读体验 1.scala中的函数 scala是一门面向对象和函数式编程相结合的语 ...
- Pandas 高级应用 数据分析
深入pandas 数据处理 三个阶段 数据准备 数据转化 数据聚合 数据准备 加载 组装 合并 - pandas.merge() 拼接 - pandas.concat() 组合 - pandas.Da ...
- C# 操作FTP
操作FTP管理类: using System; using System.Collections.Generic; using System.Text; using System.Net; using ...
- 数据库的ACID特性详解
ACID是指在 数据库管理系统(DBMS)中事物所具有的四个特性:原子性.一致性.隔离性.持久性 事物:在数据库系统中,一个事务是指由一系列连续的数据库操作组成的一个完整的逻辑过程.这组操作执行前后, ...
- css tips —— 在css中完成国际化
前提 在日常处理国际化的时候,通常是将key通过类似intl.xx(key)转换为对应环境的文案,可是如果需要在css中加入对应逻辑应该怎么做呢(比如在after的伪元素中显示不同的文案),毕竟在cs ...