安卓GeoPoint与经纬度值

30

我正在尝试获取-23.4456和45.44334的GeoPoint。

当GeoPoint只接受整数时,我需要传递哪些值到构造函数中?


4个回答

72

GeoPoint坐标基于微度(度数*1e6)-- 在这里有介绍

float lat = -23.4456f;
float lng = 45.44334f;
GeoPoint gp = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));

1
Google Maps Android API的第一版已于2012年12月3日正式停用。 - Bojan Kogoj
答案中的链接似乎已过时。 - undefined

30

我更喜欢创建一个LatLonPoint,而不是在整个应用程序中重复使用数学计算。

private static final class LatLonPoint extends GeoPoint {
    public LatLonPoint(double latitude, double longitude) {
        super((int) (latitude * 1E6), (int) (longitude * 1E6));
    }
}

然后无论我在哪里需要创建一个GeoPoint,并且我有一个纬度/经度,我只需要执行以下操作

GeoPoint point = new LatLonPoint(37.234569, -122.123456);

实际上,GeoPoint 上本来就应该有一个经纬度构造函数。


6
我从这个页面上提取了经纬度,去掉小数点后使用,效果非常好,我的家就在那里,正好如预期所在的位置。因此,只需将34.234569写为34234569...请记住:1e6表示1000000,没有其他意义;)

2

我正在寻找解决方案,也许它会对您有所帮助。

1)首先,您需要以度为单位提供数据(位置)。 2)通过公式,您需要将其乘以1000000。 3)现在,您有特定的GEO POINT位置。

例如,如果我有如下位置:纬度:23.0395677,经度:72.5660045° 那么,您的GeoPoint为(23039568、72566045);


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