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

  • 其他
    • 如何让程序推出时,GPS的图标不再闪烁(即停止使用GPS)

      #启动GPS的时候,根据需求设置一些参数,注册监听方法
      Criteria criteria = new Criteria();
      criteria.setAccuracy(Criteria.ACCURACY_FINE);
      criteria.setAltitudeRequired(false);
      criteria.setBearingRequired(false);
      criteria.setCostAllowed(true);
      criteria.setPowerRequirement(Criteria.POWER_HIGH);
      String provider = this.mLocationManager.getBestProvider(criteria, false);
      this.mLocationManager.requestLocationUpdates(provider, MINIMUM_TIME_BETWEEN_UPDATE, MINIMUM_DISTANCE_FOR_UPDATE, this.mListener);
      #退出的时候,需要取消该监听方法
      this.mLocationManager.removeUpdates(this.mListener);

      使用地图的时候也需要注意:
      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. 网页通过iframe嵌入百度地图API时自适应屏幕

    1.iframe标签按照常规响应式的样式写就可以了,比如: <style type="text/css"> iframe{width:100%;min-height:4 ...

  2. 解决使用百度地图API时偏移问题并自适应中心点和比例

    关于地图偏移官方给出的说明: 4.3 百度坐标为何有偏移? 国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密.百度坐标在此基础上,进行了BD-09二次 ...

  3. 浏览器端调用百度地图API,但地图无显示(细节问题)

    文章目录 调用JavaScript API,地图无显示解决方案 1.未输入AK((Access Key)或类型错误 2.路径有误(url未添加http:或https:) 3.JavaScript文件- ...

  4. 使用Angular8和百度地图api开发《旅游清单》

    前言: 本文的目的是通过一步步实现一个旅游清单项目,让大家快速入门Angular8以及百度地图API.我们将收获: Angular8基本用法,架构 使用百度地图API实现自己的地图应用 解决调用百度地 ...

  5. 安卓api之高德地图API(申请高德地图apiv2)

    首先可能大家比较疑惑我会选择高德地图API,在开始学习安卓的时候,在学习到使用谷歌地图API时,我就照书上说的去做了,首先获得API key,后来发现google map v1已经失效了,后来我又去申 ...

  6. 基于百度地图的python开发服务端_python编程之API入门: (一)使用百度地图API查地理坐标...

    在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...

  7. python怎么编程输入坐标_python编程之API入门: (一)使用百度地图API查地理坐标...

    在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...

  8. 百度地图引用时 报出A Parser-blocking, cross site (i.e. different eTLD+1) script

    页面引入百度地图api时 chrome控制台报出问题 A Parser-blocking, cross site (i.e. different eTLD+1) script, http://api. ...

  9. Android如何实现地图定位?Android studio+百度地图API+Android6.0系统实现地图显示、地址设置、点击地图定位功能(详细)

    文章说明:本文初衷是为了记录毕设学习过程,避免忘记操作流程.该功能是毕业设计的Android软件端的功能之一,本文将从获取百度地图密钥(AK)开始,详细地对地图定位配置和相关代码进行说明,文末将附上实 ...

最新文章

  1. Zynq SOC学习笔记之设备树
  2. Spring Boot系列教程六:日志输出配置log4j2
  3. python类的构造方法和assert的使用,用MethodType动态绑定类方法
  4. CCF-CSP认证考试历年试题集
  5. IPQ4019MTD分区生成的过程
  6. 界面开发用qt还是java,做windows界面,用QT还是MFC?
  7. 免费的中医处方系统软件
  8. 记一次外接键盘win键失灵
  9. matlab投资组合权重,Matlab做投资组合最优化
  10. win10家庭版计算机配置在哪里,Windows10家庭版没有组策略的解决方法
  11. 交换机、路由器、网关
  12. 黄金分割法c语言源代码,黄金分割法-C语言
  13. 青花瓷的小鸟装饰蛋糕
  14. 常用sql语句(备忘)
  15. linux内核带rt,Ubuntu18.04安装PREEMPT_RT实时内核
  16. c语言十六转十进制,C语言 · 十六进制转十进制
  17. 在手机中怎样将PDF转换成TXT
  18. 大师对攻读研究生的看法
  19. 高考失败,我是怎么逆袭的?——来自路客
  20. moblin----intel 操作系统尝试

热门文章

  1. opengl加载显示3D模型nff类型文件
  2. boost::mp11::mp_unique相关用法的测试程序
  3. boost::mp11::mp_plus相关用法的测试程序
  4. boost::iterator_adaptor用法的测试程序
  5. boost::hana::make_lazy用法的测试程序
  6. boost::geometry模块实现显示不同类型的点的测试程序
  7. Boost:点质心的测试程序
  8. 基于Boost::beast模块的协程WebSocket客户端
  9. ITK:两个图像的像素分割
  10. VTK:Matlab之MatlabEngineFilter