getLatitudeE6() 返回错误的值。

3
    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设备上手指点击的纬度和经度。

我猜测我的代码存在问题,或者是由Google提供的“getLatitudeE6”函数出现了错误。正如你所知,纬度只能从-90到+90度,但是当我在南极洲周围,特别是下面的位置点击时,我只看到-80。换句话说,纬度的范围只限于-80到80度。这是我的问题还是Google的问题?

2个回答

2
“您在南极附近点击”,我猜您是使用MapView获取坐标。MapView使用墨卡托投影作为地图投影方式,而该投影方式在极点周围不实用,而此时您希望点击的地方就在极点附近。所以我猜北极和南极甚至不在地图上。这是所使用的地图投影方式的限制。
如果您想要一个好的南极地图,您应该使用其他地图投影方式,但我不知是否可以在地图视图中这样做。然而,我知道您至少可以在Google Maps中更改地图投影方式。

非常感谢你的帮助!在提问之前,我应该先学习一些关于不同投影方式的知识。顺便说一下,我明白在MapView中使用不同的地图投影是不确定的。 - Latitude

2

如果您查阅API文档,它会说:

纬度:为了在墨卡托投影中保持准确性,将被夹在-80度和+80度之间(包括这两个值)。

这是因为在极地附近,墨卡托投影失去了准确性。


非常感谢。其实我不知道有几个投影方式。你的建议对我非常有帮助!! - Latitude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接