2

arcgis オフライン マップを使用する Android アプリケーションがあり、反対側には bing マップがあります。地図をタップするだけで、場所を PC に送信する必要があります。ピンの作成には成功しましたが、Google マップで認識される場所に変換する方法がわかりませんでした。選択した場所を表示するためにトーストを作成しました。私のコードは次のようになります。

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 の代わりに経度と緯度を使用する必要があります。

アップデート

xy、およびwkidArcGIS オブジェクトの代わりに、自分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();
于 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 に答える