2011-07-31 137 views
2
public boolean onTap(GeoPoint p, MapView mapView) { 

     String msg; 
     double d1 = p.getLatitudeE6()/1E6; 
     double d2 = p.getLongitudeE6()/1E6; 
     String str1 = Location.convert(d1, Location.FORMAT_DEGREES); 
     String str2 = Location.convert(d2, Location.FORMAT_DEGREES); 
     msg = "x = "+ p.getLatitudeE6() + 
       ", y = "+ p.getLongitudeE6(); 
     Toast.makeText(MapViewActivity.this, msg, Toast.LENGTH_LONG).show(); 
     return true; 
    } 

我剛剛製作了此代碼,以查看緯度和經度,其中一個手指點擊Android設備。getLatitudeE6()返回錯誤的值

我想有在我的代碼有問題或在

谷歌提供的功能「getLatitudeE6」的錯誤。如你所知,緯度只從-90到+90度,但是當我點擊

南極洲的位置,特別是在下面,我只能看到-80。換言之,緯度範圍從-80到80不等。這是我的錯還是谷歌的錯?

回答

2

如果你檢查它說API文檔:

緯度:這會固定在-80度,+ 80度(含)之間,爲了在墨卡託投影保持精度。

這是因爲在極點附近,墨卡託投影失去了準確性。

+0

非常感謝。其實我不知道有幾個投影。你的建議對我很有幫助! – Latitude

2

你「打開南極洲」,我猜你正在使用MapView來獲取座標。 MapView使用Mercator projection作爲地圖投影,並且該投影的一個缺點是在這種情況下您不想在這些地方點擊兩極。所以我猜北極和南極甚至都不在地圖上。所以這是使用地圖投影的一個限制。

如果你想要一張南極洲的好地圖,你應該使用不同的map projection,但我不知道這是否可能與地圖視圖。不過,我知道您至少可以在Google地圖中更改地圖投影。

+0

謝謝你幫助我!在問這個問題之前,我應該先研究一下各種投影。順便說一句,我知道在MapView中使用不同的地圖投影是不確定的。 – Latitude