由api给出的高坐标

时间:2015-09-13 06:21:18

标签: android google-maps latitude-longitude

在我的Android应用中,我需要在地图上显示一些点。 我从API(http://data.citedia.com/r1/parks)获得点坐标。

然而,由API提供的协调值具有较高的值:" geometry":{" type":" Point","坐标& #34;:[ - 187178.15,6124340.9]} 即可。 我的意思是经度在-180或180之间......

有没有人遇到过同样的问题?

1 个答案:

答案 0 :(得分:2)

好的,所以这就是我这样做的方式: 下载JavaProj-noawt库(来自http://www.java2s.com/Code/Jar/j/Downloadjavaproj106noawtjar.htm)或任何其他来源,它是一个适合android的版本,它没有awt类。

然后使用以下代码:

public static double[] convertFromWebMercatorToLatLng(double x, double y) {
    Projection googleProjection = getGoogleProjection();
    Point2D.Double latLngPoint = new Point2D.Double();
    latLngPoint = googleProjection.inverseTransform(new Point2D.Double(x, y), latLngPoint);
    return new double[] { latLngPoint.x, latLngPoint.y };
}

private static final int mGoogleEPSG = 3785;
// Projection EPSG
private static Projection mGoogleProjectionSystem = null;
private static Projection getGoogleProjection() {
    if (null == mGoogleProjectionSystem) {
        mGoogleProjectionSystem = ProjectionFactory.getNamedPROJ4CoordinateSystem("epsg:" + mGoogleEPSG);
    }
    return mGoogleProjectionSystem;
}

您只需将此代码放在“Util”类中,并将其称为提供x(水平)和y(垂直)坐标的静态方法,将为您提供一个x(经度)为'0'的数组在'1'纬度。

请注意,谷歌地图中的LatLng对象是“已切换”,包含(y,x)而不是(x,y),如上述方法所示!