做移动应用使用地图API时需要注意的问题
生活随笔
收集整理的這篇文章主要介紹了
做移动应用使用地图API时需要注意的问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近在做一個(gè)基于地點(diǎn)提醒的移動(dòng)應(yīng)用,當(dāng)初考慮大家都心知肚明的原因,謹(jǐn)慎的選擇了百度地圖,現(xiàn)在想想其實(shí)完全沒(méi)有必要,好的應(yīng)用本來(lái)就不分國(guó)界的,最后可能還是得換回Google地圖。畢竟Google地圖在技術(shù)和成熟度上完勝百度地圖,當(dāng)然百度也在慢慢追趕,希望有一天大家都能用上咱們自己的好用的地圖服務(wù)。
現(xiàn)在把碰到的問(wèn)題和解決方案羅列一下:
- 版權(quán):如果是大量商用的話,還是得事先注意一下版權(quán)意識(shí),不然到時(shí)候就很被動(dòng)了。兩者的免費(fèi)版都不允許商業(yè)應(yīng)用,具體可以看這里Google Maps API,百度API常見問(wèn)題。不過(guò)在萬(wàn)能的國(guó)度,也有其他解決方案Google地圖采集遇到IP限制的解決思路,其他的大家可以google一下。
- GPS偏差(僅限中國(guó)國(guó)大陸地區(qū)):剛開始在看API文檔時(shí),沒(méi)太注意這樣一句話[百度對(duì)外接口的坐標(biāo)系,都是經(jīng)過(guò)國(guó)家測(cè)繪局加密處理,符合國(guó)家測(cè)繪局對(duì)地理信息保密要求]?悲催了。這就是中國(guó)特色(看看月光博主這篇網(wǎng)絡(luò)地圖國(guó)家隊(duì)進(jìn)場(chǎng)搶錢)。我們的需求是:根據(jù)手機(jī)GPS獲得的坐標(biāo)跟用戶從地圖上選擇的坐標(biāo)進(jìn)行比較,然后決定是否在用戶進(jìn)入或離開該區(qū)域進(jìn)行提醒。由于百度對(duì)外提供的坐標(biāo)系是百度自己的坐標(biāo)系,而手機(jī)GPS獲得的是原始坐標(biāo),兩者不在一個(gè)坐標(biāo)系上,所以有很大的誤差,我們測(cè)試了一下,誤差在千米之外。所以必須得把兩者換成統(tǒng)一坐標(biāo)系。換成原始GPS坐標(biāo)在國(guó)內(nèi)原則上是違法的,所以只能統(tǒng)一成各個(gè)地圖運(yùn)營(yíng)商自己的坐標(biāo)系,比如百度坐標(biāo)系或者google坐標(biāo)系。
- API性能比較,請(qǐng)參照:多家地圖API內(nèi)存消耗對(duì)比測(cè)試
- 如何轉(zhuǎn)換成百度坐標(biāo)系:官方文檔給的是:坐標(biāo)轉(zhuǎn)換接口非公開。請(qǐng)將您的公司名稱、項(xiàng)目名稱、項(xiàng)目簡(jiǎn)介、聯(lián)系人和聯(lián)系方式,發(fā)郵件至mapapi@baidu.com咨詢。有專人為您解答。說(shuō)白了就是收錢,不過(guò)這個(gè)東西在網(wǎng)上有人透露了。我試過(guò)還挺好使。
- http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 其中: from: 來(lái)源坐標(biāo)系 (0表示原始GPS坐標(biāo),2表示Google坐標(biāo))to: 轉(zhuǎn)換后的坐標(biāo) (4就是百度自己啦,好像這個(gè)必須是4才行)x: 精度y: 緯度返回的結(jié)果是一個(gè)json字符串: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} error:是結(jié)果是否出錯(cuò)標(biāo)志位,"0"表示OKx: 百度坐標(biāo)系的精度(Base64加密)y: 百度坐標(biāo)系的緯度(Base64加密)
- 百度還提供了js的轉(zhuǎn)換工具,可參考官方鏈接:常用坐標(biāo)轉(zhuǎn)換
- 如何轉(zhuǎn)換成google坐標(biāo)系:
- http://ditu.google.cn/maps/vp?spn=0.0,0.0&z=18&vp=latitude,longitude 注意,google的參數(shù)里經(jīng)緯度是反過(guò)來(lái)的。相關(guān)詳細(xì)見 http://blog.sina.com.cn/s/blog_65bd7eef0100hu5o.html
- 其他
- 如何讓程序推出時(shí),GPS的圖標(biāo)不再閃爍(即停止使用GPS) #啟動(dòng)GPS的時(shí)候,根據(jù)需求設(shè)置一些參數(shù),注冊(cè)監(jiān)聽方法 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);#退出的時(shí)候,需要取消該監(jiān)聽方法 this.mLocationManager.removeUpdates(this.mListener); 使用地圖的時(shí)候也需要注意: 1:使用BMapManager一定要最后調(diào)用stop和destroy 2:使用MyLocationOverlay的時(shí)候,如果enableMyLocation之后一定接的disable掉 3:其實(shí)就一個(gè)原則,記得及時(shí)安全的資源釋放,特別是這種全局資源(用戶很care的)
- LocationManager.addProximityAlert()可以試用,但是不好控制,特別是他的啟動(dòng)間隔無(wú)法控制,最好還是自己實(shí)現(xiàn)相關(guān)的功能,然后在準(zhǔn)確度和耗電上根據(jù)應(yīng)用找到一個(gè)好的平衡點(diǎn)。
- 如何通過(guò)LocationManager獲取用戶的最佳當(dāng)前位置 =》Good way of getting the user's location in Android
總結(jié)
以上是生活随笔為你收集整理的做移动应用使用地图API时需要注意的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DexFile类介绍
- 下一篇: SDK,NDK,ADT工具下载常用地址