簡體   English   中英

如何克服Google靜態地圖API 6小數位精度限制?

[英]How to overcome google static maps API 6 decimal places precision limit?

Google Static Maps API文檔指出:

緯度和經度是使用逗號分隔的文本字符串中的數字定義的,這些數字的精度為小數點后6位。 例如,“ 40.714728,-73.998672”是有效的地理編碼值。 超過6位小數的精度將被忽略。

但是,我注意到,在許多情況下,這種精度是不夠的。 編輯 :實際上,小數點后6位允許大約2厘米的精度,如323go注釋 。有關更多信息,請參見底部的編輯。)

例如:嘗試在埃菲爾鐵塔上放置標記( Lat: 48.8583701,Lon: 2.2922926 )會被截斷(對Lat: 48.858370, Lon:2.292292 ),結果如下,其偏移量不可忽略:

在此處輸入圖片說明

我使用靜態地圖是因為在我的應用程序中,我同時在RecyclerView的項內顯示多個地圖。

目前,我是通過Picasso異步注入Google靜態地圖API返回的圖像來實現的。

當前的方法運行良好且運行平穩,唯一的問題是地圖精度不足。

作為一種解決方法,我正在考慮在精簡模式下使用標准MapView ,但是我擔心這可能會導致性能問題,如本問題所述

即使需要付款,是否有辦法克服這一限制?



編輯

我使用了錯誤的坐標。 我會解釋一下我是如何得到它們的,以防萬一其他人犯同樣的錯誤。

加載https://google.com/maps/place/Tour+Eiffel后 ,我使用的是URL中顯示的坐標,在我的情況下,該坐標為URL

當網絡版Google Maps的左側面板處於打開狀態(這是默認行為)時,圖釘似乎位於地圖的中心。

不過, URL的坐標表示地圖的中心,包括左側面板下的部分 一旦左側面板合攏,這很容易注意到。

這就是造成水平偏移的原因。

我試圖弄清楚這一點,但就我而言,一切工作正常且精確,我注意到您使用的坐標不同於我的坐標

對於艾菲爾鐵塔,我使用了:

48.858285、2.294388

那應該給您帶來更好的結果,還請記住,您可以使用Geocoder放置帶有地點名稱或完整地址的標記,即:

戰神廣場(Champ de Mars),法國阿納托萊大街5號,郵政編碼75007,法國巴黎

這樣的事情應該有所幫助

Geocoder geocoder = new Geocoder(<your context>);  
List<Address> addresses;
addresses = geocoder.getFromLocationName(<String address>, 1);
if(addresses.size() > 0) {
    double latitude= addresses.get(0).getLatitude();
    double longitude= addresses.get(0).getLongitude();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM