在我们程序员的日常开发中,总会时不时的需要用到地图开发,我也在多次碰到之后,写下我对地图开发的理解经验和总结。

一、地图的选择

  回想一下我们生活中用到的地图工具,数了一下,百度地图,高德地图,腾讯地图,谷歌地图,其他。

  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=银行&region=北京&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的选择和使用的更多相关文章

  1. [转] 一个程序猿眼中的国内主流地图api

    在网站或者手机应用中,经常用到地图api.在现在这么激烈的竞争下,各地图服务提供的服务基本都趋于一致了.一个公司推出的新服务,其他公司肯定也会很快的跟进.这样,对于开发者来说,地图api的选择就主要参 ...

  2. 【百度地图API】让用户选择起点和终点的驾车导航

    原文:[百度地图API]让用户选择起点和终点的驾车导航 摘要: 如果用户搜索“从机场到火车站”,使用驾车导航DrivingRoute会默认显示一条结果.但同一个城市可能有多个机场和火车站,那么,如何用 ...

  3. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 百度地图API试用--(初次尝试)

    2016-03-17: 百度地图API申请key的步骤相对简单,不做过多阐述. 初次使用百度地图API感觉有点神奇,有些功能加进来以后有点问题,注释掉等有空再解决. 代码如下: <%@ page ...

  5. Google 地图 API V3 针对移动设备进行开发

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  6. Google 地图 API V3 之控件

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  7. 如何在网页中调用百度地图api

    我想在木有提供地图接口的年代,前端工程师门要么只写上企业的具体地址,要么就是用一张标有自己位置的地图图片.但是现在不一样啦!为了增强用户体验,谷歌,甚至百度都很开放了,你可以在他们的网站上找到地图接口 ...

  8. 地图API文档

    目录 腾讯地图API 2 1.API概览... 2 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 2 1.2 URL API:... 2 1.3 静态图AP ...

  9. C#调用百度地图API经验分享(一)

    最近客户提了一个需求,要在网站中添加百度地图的显示,其实原来是有谷歌地图的,但由于谷歌在大陆遭到封杀,只好再给用户增加一个选择了. 下面我将自己最近整理的一些知识分享给大家. 如何使用百度地图API: ...

随机推荐

  1. JVM反调调用优化,导致发生大量异常时log4j2线程阻塞

    背景 在使用log4j2打日志时,当发生大量异常时,造成大量线程block问题的问题. 一个关于log4j2的高并发问题:https://blog.fliaping.com/a-high-concur ...

  2. linux下安装sphinx

    1.下载sphinx源码包 上面截图的这个网址   复制链接地址   在putty终端使用:wget http://sphinxsearch.com/files/sphinx-2.3.1-beta.t ...

  3. Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String'

    Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String' 一.发现问题 <select ...

  4. 随笔分类 - java高级特性

    转自:http://www.cnblogs.com/linjiqin/category/282013.html

  5. 配置servlet支持文件上传

    Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件.为了使Servlet支付文件上传需 ...

  6. 最新版本的Struts2+Spring4+Hibernate4三大框架整合(截止2014-10-15,提供源码下载)

    一. 项目名称:S2316S411H436 项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1 源代码下载地址: 基本版:ht ...

  7. mongodb安装、运行

    1.下载安装: 切换到:/usr/local/ mkdir -p mongodb groupadd -g 800 mongodb useradd -u 801 -g mongodb mongodb c ...

  8. winform版本自动更新

    我们在使用软件的时候经常会遇到升级版本,这也是Winform程序的一个功能,今天就大概说下我是怎么实现的吧(代码有点不完美有小BUG,后面再说) 先说下我的思路:首先在打开程序的时候去拿到我之前在网站 ...

  9. The tilde ( ~ ) operator in JavaScript

    From the JavaScript Reference on MDC, ~ (Bitwise NOT) Performs the NOT operator on each bit. NOT a y ...

  10. 【转】VIM 中设置Tab

    灵活操作 Vim 中的 Tabsgaleki post @ 2007年11月16日 05:07PM in Vim Tips with tags: vim tabs Vim 支持 Tabs,也就是标签页 ...