【问题标题】:converting from arcgis map tap x and y to google maps or bing maps location从 arcgis 地图点击 x 和 y 转换为谷歌地图或 bing 地图位置
【发布时间】:2013-09-24 05:41:01
【问题描述】:

我有一个使用 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);
        }
    }
});

【问题讨论】:

    标签: android google-maps maps arcgis offline-mode


    【解决方案1】:

    使用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。

    更新

    如果您有xywkid 而不是ArcGIS Point 对象,您可以轻松地自己创建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();
    

    【讨论】:

    • 我有一个简单的我自己的 Geometry 类有 Double x;双 y;诠释 wkid; // 对于 SpatialReference.... 现在如何使用 GeometryEngine.project() 使用这些数据??
    • @YasirAli:好问题。我更新了我的答案来解决你的问题。
    【解决方案2】:
    • onSingleTap(final float x, final float y): (x,y) 是屏幕坐标,不是地图坐标。
    • mapPoint = mMapView.toMapPoint(x, y): (mapPoint.getX(),mapPoint.getY()) 是地图坐标,但不是(lat,long)。你必须使用 GeometryService 来投影它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 2015-03-23
      • 2014-04-19
      • 2016-09-23
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多