2

我有一个使用 arcgis 离线地图的 android 应用程序,另一方面我有一个 bing 地图。当我点击地图时,我应该向电脑发送一个位置。我成功制作了一个图钉,但我不知道如何将其转换为谷歌地图可以理解的位置。我举杯展示了选定的位置,我的代码给了我:

longitude:417
latitude:584

但我应该将其转换为:longitude = 39.54367547例如。这是我的代码:

// correcting the location
mMapView.setOnSingleTapListener(new OnSingleTapListener() {
    private static final long serialVersionUID = 1L;

    @Override
    public void onSingleTap(final float x, final float y) {
        if (rd_wrt == 1 || rd_wrt == 2) {
            mapPoint = mMapView.toMapPoint(x, y);
            redPinGraphicalLayer.removeAll();

            Graphic redPinGraphic = new Graphic(mapPoint, redPin);
            redPinGraphicalLayer.addGraphic(redPinGraphic);

            Toast.makeText(getApplicationContext(), "longitude " +x +"\n   latitude " + y,
                    Toast.LENGTH_LONG).show();

            Intent data = new Intent();

            data.putExtra("longitude", longitude);
            data.putExtra("latitude", latitude);
            setResult(RESULT_OK, data);
        }
    }
});
4

2 回答 2

3

使用GeometryEngine将 mapPoint 从地图坐标投影到地理坐标(即经纬度):

Point wgs84Point = (Point) GeometryEngine.project(
        mapPoint,
        mMapView.getSpatialReference(),
        SpatialReference.create(SpatialReference.WKID_WGS84));
longitude = wgs84Point.getX();
latitude = wgs84Point.getY();

如果保留 Toast,则需要在 Toast 字符串中使用经度和纬度而不是 x 和 y。

更新

如果您有x, y, 而wkid不是 ArcGISPoint对象,则可以轻松创建Point自己的对象:

Point myPoint = new Point(x, y);
Point wgs84Point = (Point) GeometryEngine.project(
        myPoint,
        SpatialReference.create(wkid),
        SpatialReference.create(SpatialReference.WKID_WGS84));
longitude = wgs84Point.getX();
latitude = wgs84Point.getY();
于 2013-09-23T16:32:55.413 回答
0
  • onSingleTap(final float x, final float y): (x,y) 是屏幕坐标,不是地图坐标。
  • mapPoint = mMapView.toMapPoint(x, y): (mapPoint.getX(),mapPoint.getY()) 是地图坐标,但不是 (lat,long)。你必须使用 GeometryService 来投影它。
于 2013-09-19T21:10:27.170 回答