做移动应用使用地图API时需要注意的问题
生活随笔
收集整理的這篇文章主要介紹了
做移动应用使用地图API时需要注意的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在做一個基于地點提醒的移動應用,當初考慮大家都心知肚明的原因,謹慎的選擇了百度地圖,現在想想其實完全沒有必要,好的應用本來就不分國界的,最后可能還是得換回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"表示OKx: 百度坐標系的精度(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时需要注意的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DexFile类介绍
- 下一篇: 借记卡工本费5块是干嘛的