最近在做一个基于地点提醒的移动应用,当初考虑大家都心知肚明的原因,谨慎的选择了百度地图,现在想想其实完全没有必要,好的应用本来就不分国界的,最后可能还是得换回Google地图。毕竟Google地图在技术和成熟度上完胜百度地图,当然百度也在慢慢追赶,希望有一天大家都能用上咱们自己的好用的地图服务。

  现在把碰到的问题和解决方案罗列一下:

  • 版权:如果是大量商用的话,还是得事先注意一下版权意识,不然到时候就很被动了。两者的免费版都不允许商业应用,具体可以看这里Google Maps API百度API常见问题。不过在万能的国度,也有其他解决方案Google地图采集遇到IP限制的解决思路,其他的大家可以google一下。
  • GPS偏差(仅限中国国大陆地区):刚开始在看API文档时,没太注意这样一句话[百度对外接口的坐标系,都是经过国家测绘局加密处理,符合国家测绘局对地理信息保密要求] 悲催了。这就是中国特色(看看月光博主这篇网络地图国家队进场抢钱)。我们的需求是:根据手机GPS获得的坐标跟用户从地图上选择的坐标进行比较,然后决定是否在用户进入或离开该区域进行提醒。由于百度对外提供的坐标系是百度自己的坐标系,而手机GPS获得的是原始坐标,两者不在一个坐标系上,所以有很大的误差,我们测试了一下,误差在千米之外。所以必须得把两者换成统一坐标系。换成原始GPS坐标在国内原则上是违法的,所以只能统一成各个地图运营商自己的坐标系,比如百度坐标系或者google坐标系。
  • API性能比较,请参照:多家地图API内存消耗对比测试
  • 如何转换成百度坐标系:官方文档给的是:坐标转换接口非公开。请将您的公司名称、项目名称、项目简介、联系人和联系方式,发邮件至mapapi@baidu.com咨询。有专人为您解答。说白了就是收钱,不过这个东西在网上有人透露了。我试过还挺好使。
    • http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
      其中:
      from: 来源坐标系   (0表示原始GPS坐标,2表示Google坐标)
        to: 转换后的坐标  (4就是百度自己啦,好像这个必须是4才行)
         x: 精度
         y: 纬度

      返回的结果是一个json字符串:
      {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
      error:是结果是否出错标志位,"0"表示OK
          x: 百度坐标系的精度(Base64加密)
          y: 百度坐标系的纬度(Base64加密)

       
      
    • 百度还提供了js的转换工具,可参考官方链接:常用坐标转换
  • 如何转换成google坐标系:
    • http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=latitude,longitude
      
      注意,google的参数里经纬度是反过来的。
      
      相关详细见
      http://blog.sina.com.cn/s/blog_65bd7eef0100hu5o.html
  • 其他
    • 使用地图的时候也需要注意:
      1:使用BMapManager一定要最后调用stop和destroy
      2:使用MyLocationOverlay的时候,如果enableMyLocation之后一定接的disable掉
      3:其实就一个原则,记得及时安全的资源释放,特别是这种全局资源(用户很care的)
    • LocationManager.addProximityAlert()可以试用,但是不好控制,特别是他的启动间隔无法控制,最好还是自己实现相关的功能,然后在准确度和耗电上根据应用找到一个好的平衡点。
    • 如何通过LocationManager获取用户的最佳当前位置 =》Good way of getting the user's location in Android

程序开发使用地图API时需注意的问题(转)的更多相关文章

  1. Web API核查表:设计、测试、发布API时需思考的43件事[转]

    Web API核查表:设计.测试.发布API时需思考的43件事   当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是 ...

  2. 微信小程序-基于高德地图API实现天气组件(动态效果)

    微信小程序-基于高德地图API实现天气组件(动态效果) ​ 在社区翻腾了许久,没有找到合适的天气插件.迫不得已,只好借鉴互联网上的web项目,手动迁移到小程序中使用.现在分享到互联网社区中,帮助后续有 ...

  3. ***微信LBS地理位置开发+百度地图API(地理位置和坐标转换)

    微信公众平台开发 - 获取用户地理位置 本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会 ...

  4. 做移动应用使用地图API时需要注意的问题

    最近在做一个基于地点提醒的移动应用,当初考虑大家都心知肚明的原因,谨慎的选择了百度地图,现在想想其实完全没有必要,好的应用本来就不分国界的,最后可能还是得换回Google地图.毕竟Google地图在技 ...

  5. 小程序开发-Map地图组件

    Map组件 是原生组件,使用时请注意相关限制.个性化地图能力可在小程序后台"设置-开发者工具-腾讯位置服务"申请开通. 设置subkey后,小程序内的地图组件均会使用该底图效果,底 ...

  6. 微信小程序开发-易源API的调用

    起因:在开发一款旅游类微信小程序时,需要接入大量的景点信息,此时可以选择自己新建数据库导入数据并读取,但是对于我来说,因为只有一个人,数据库还涉及到需要维护方面,选择调用已有API. 过程:首先查阅微 ...

  7. 小程序开发-7-访问api数据与ES6在小程序中的应用

    访问API数据与ES6在小程序中的应用 看待组件的两种观点 组件复用 代码分离-(特别重要) 不能在一个页面写所有的代码,代码分离具有很强的可读性.可维护性 Blink Api 介绍与测试API ur ...

  8. 支付宝小程序开发——获取位置API没有城市区号的最佳处理方案

    前言: 需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢? 需 ...

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

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

随机推荐

  1. Common Internet File System

    CIFS (Common Internet File System) is a protocol that gained popularity around the year 2000, as ven ...

  2. C++ 竞赛常用头文件

    C.传统 C++ #include <assert.h> 设定插入点 #include <ctype.h> 字符处理 #include <errno.h> 定义错误 ...

  3. DataTrigger

    <ListView Name="lvStatus" MinHeight="120" Grid.Row="2"> <List ...

  4. SqlServer2008安装时系统配置检查器重新启动计算机失败

    系统:win7 64 旗舰版   软件版本:sqlserver 2008 在安装前执行:系统配置检查器 的时候报错 ‘重新启动计算机失败’,如下图 处理办法: RebootRequiredCheck ...

  5. linux环境中设置jacoco覆盖率

    cd /alidata1/admin/za-themis pkill -9 -f za-themis #CATALINA_HOME=/root/za-tomcat #CATALINA_BASE=/ro ...

  6. 在Win7上安装MySql5.2遇到Write configuration file的解决

    机器从XP翻新到Win7后,原有的环境也被清除了,因此找了个时间重新安装MySql. 以前轻车熟路的过程,在最后一环却卡住了,出现Write configuration file 错误. 以前从来没有 ...

  7. 重装上了Fedora8自带的MySQL5.0.45,再试,告捷!!

    MySql服务器IP是192.168.0.104,测试连接的笔记本IP为192.168.0.100. 以下命令说明两台机器的网络连接是通畅的: [root@bogon bin]# ping 192.1 ...

  8. (C语言)memcpy函数原型的实现

    在网上看到一道题,实现一个memcpy函数,于是查了一下memcpy的函数原型,如下: void* memcpy(char *strDest, const char *strSrc, int Coun ...

  9. 能说明你的Javascript技术很烂的五个原因

    Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态.如此被广泛使用.如此根植于我们的生活中的另外一种语言.它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西 ...

  10. 移动端兼容 - faskclick.js

    fasckclick为解决移动端300ms延迟而生 github地址为:https://github.com/ftlabs/fastclick 使用方法: 1. 原生使用(window.onload或 ...