2011-07-31 158 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