日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android中高德地图与百度地图坐标转换

發(fā)布時(shí)間:2024/3/12 Android 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中高德地图与百度地图坐标转换 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目中實(shí)驗(yàn)數(shù)據(jù)點(diǎn)取自高德地圖,它是火星坐標(biāo)系統(tǒng)(下面會(huì)有解釋),而現(xiàn)在希望用百度地圖的SDK進(jìn)行開發(fā),兩套不同的規(guī)范自然需要進(jìn)行轉(zhuǎn)換。如何解決這個(gè)問題呢?參考了網(wǎng)上很多人的博客和資料。

最終解決此問題用到的仍然是百度的官方文檔有關(guān)于坐標(biāo)轉(zhuǎn)換的部分

http://lbsyun.baidu.com/index.php?title=androidsdk/guide/tool#.E5.9D.90.E6.A0.87.E8.BD.AC.E6.8D.A2

坐標(biāo)轉(zhuǎn)換

百度地圖SDK采用的是百度自有的地理坐標(biāo)系(bdll09),因此開發(fā)者在做位置標(biāo)注的時(shí)候,需要將其他類型的坐標(biāo)轉(zhuǎn)換為百度坐標(biāo)。相應(yīng)的接口和轉(zhuǎn)換方式如下:

<span class="co1" style="color:#666666;font-style:italic">// 將google地圖、soso地圖、aliyun地圖、mapabc地圖和amap地圖// 所用坐標(biāo)轉(zhuǎn)換成百度坐標(biāo) </span> CoordinateConverter converter <span class="sy0" style="color:#339933;">=</span> <span class="kw1" style="font-family:Consolas,monaco,'Courier New',Courier,monospace!important;color:#000000;font-weight:bold">new</span> CoordinateConverter<span class="br0" style="color:#0990;">(</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> converter.<span class="me1" style="color:#06633;">from</span><span class="br0" style="color:#0990;">(</span>CoordType.<span class="me1" style="color:#06633;">COMMON</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> <span class="co1" style="color:#666666;font-style:italic">// sourceLatLng待轉(zhuǎn)換坐標(biāo) </span> converter.<span class="me1" style="color:#06633;">coord</span><span class="br0" style="color:#0990;">(</span>sourceLatLng<span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> LatLng desLatLng <span class="sy0" style="color:#339933;">=</span> converter.<span class="me1" style="color:#06633;">convert</span><span class="br0" style="color:#0990;">(</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> <span class="co1" style="color:#666666;font-style:italic">// 將GPS設(shè)備采集的原始GPS坐標(biāo)轉(zhuǎn)換成百度坐標(biāo) </span> CoordinateConverter converter <span class="sy0" style="color:#339933;">=</span> <span class="kw1" style="font-family:Consolas,monaco,'Courier New',Courier,monospace!important;color:#000000;font-weight:bold">new</span> CoordinateConverter<span class="br0" style="color:#0990;">(</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> converter.<span class="me1" style="color:#06633;">from</span><span class="br0" style="color:#0990;">(</span>CoordType.<span class="me1" style="color:#06633;">GPS</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> <span class="co1" style="color:#666666;font-style:italic">// sourceLatLng待轉(zhuǎn)換坐標(biāo) </span> converter.<span class="me1" style="color:#06633;">coord</span><span class="br0" style="color:#0990;">(</span>sourceLatLng<span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span> LatLng desLatLng <span class="sy0" style="color:#339933;">=</span> converter.<span class="me1" style="color:#06633;">convert</span><span class="br0" style="color:#0990;">(</span><span class="br0" style="color:#0990;">)</span><span class="sy0" style="color:#339933;">;</span>

使用上面的代碼就能很好地進(jìn)行坐標(biāo)的轉(zhuǎn)化。


下面列舉其他牛人的一些內(nèi)容:

大家都知道,美國(guó)GPS使用的是WGS84的坐標(biāo)系統(tǒng),以經(jīng)緯度的形式來表示地球平面上的某一個(gè)位置,這應(yīng)該是國(guó)際共識(shí)。但在我國(guó),出于國(guó)家安全考慮,國(guó)內(nèi)所有導(dǎo)航電子地圖必須使用國(guó)家測(cè)繪局制定的加密坐標(biāo)系統(tǒng),即將一個(gè)真實(shí)的經(jīng)緯度坐標(biāo)加密成一個(gè)不正確的經(jīng)緯度坐標(biāo),我們?cè)跇I(yè)內(nèi)將前者稱之為地球坐標(biāo),后者稱之為火星坐標(biāo),具體的說明可以參看百度百科中關(guān)于火星坐標(biāo)系統(tǒng)的解釋。


1.國(guó)內(nèi)各地圖API坐標(biāo)系統(tǒng)比較

API

坐標(biāo)系

百度地圖API

百度坐標(biāo)

騰訊搜搜地圖API

火星坐標(biāo)

搜狐搜狗地圖API

搜狗坐標(biāo)*

阿里云地圖API

火星坐標(biāo)

圖吧MapBar地圖API

圖吧坐標(biāo)

高德MapABC地圖API

火星坐標(biāo)

靈圖51ditu地圖API

火星坐標(biāo)


2.下面是百度官方對(duì)百度坐標(biāo)為何有偏移的解釋

  國(guó)際經(jīng)緯度坐標(biāo)標(biāo)準(zhǔn)為WGS-84,國(guó)內(nèi)必須至少使用國(guó)測(cè)局制定的GCJ-02,對(duì)地理位置進(jìn)行首次加密。百度坐標(biāo)在此基礎(chǔ)上,進(jìn)行了BD-09二次加密措施,更加保護(hù)了個(gè)人隱私。百度對(duì)外接口的坐標(biāo)系并不是GPS采集的真實(shí)經(jīng)緯度,需要通過坐標(biāo)轉(zhuǎn)換接口進(jìn)行轉(zhuǎn)換。


3.火星坐標(biāo)系?(GCJ-02)?與百度坐標(biāo)系?(BD-09)?的轉(zhuǎn)換算法

GCJ-02(火星坐標(biāo))BD-09(百度坐標(biāo))

算法代碼如下,其中bd_encrypt將?GCJ-02坐標(biāo)轉(zhuǎn)換成?BD-09坐標(biāo),?bd_decrypt反之。

[java] view plaincopy
  • void?bd_encrypt(double?gg_lat,?double?gg_lon,?double?&bd_lat,?double?&bd_lon)??
  • {??
  • ????double?x?=?gg_lon,?y?=?gg_lat;??
  • ????double?z?=?sqrt(x?*?x?+?y?*?y)?+?0.00002?*?sin(y?*?x_pi);??
  • ????double?theta?=?atan2(y,?x)?+?0.000003?*?cos(x?*?x_pi);??
  • ????bd_lon?=?z?*?cos(theta)?+?0.0065;??
  • ????bd_lat?=?z?*?sin(theta)?+?0.006;??
  • }??
  • ???
  • void?bd_decrypt(double?bd_lat,?double?bd_lon,?double?&gg_lat,?double?&gg_lon)??
  • {??
  • ????double?x?=?bd_lon?-?0.0065,?y?=?bd_lat?-?0.006;??
  • ????double?z?=?sqrt(x?*?x?+?y?*?y)?-?0.00002?*?sin(y?*?x_pi);??
  • ????double?theta?=?atan2(y,?x)?-?0.000003?*?cos(x?*?x_pi);??
  • ????gg_lon?=?z?*?cos(theta);??
  • ????gg_lat?=?z?*?sin(theta);??
  • }??

  • 4.地球坐標(biāo)系?(WGS-84)?到火星坐標(biāo)系?(GCJ-02)?的轉(zhuǎn)換算法

    ? WGS-84GCJ-02的轉(zhuǎn)換(即GPS加偏算法是一個(gè)普通青年輕易無法接觸到的公開秘密。這個(gè)算法的代碼在互聯(lián)網(wǎng)上是公開的,詳情請(qǐng)使用Google搜索"wgtochina_lb"?

    ? 整理后的算法代碼請(qǐng)參考?https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936?。知道了這個(gè)算法之后,就可以離線進(jìn)行Google地圖偏移校正,不必像之前那么麻煩。

    至于GCJ-02WGS-84的轉(zhuǎn)換(即GPS糾偏),可以使用二分法。


    總結(jié)

    以上是生活随笔為你收集整理的Android中高德地图与百度地图坐标转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。