我有一个使用 arcgis 离线地图的安卓应用程序,另一边我有一个 bing 地图。当我点击地图时,我应该将位置发送到PC。我成功地制作了一个图钉,但我无法了解如何将其转换为谷歌地图可以理解的位置。我做了一个吐司来呈现所选位置,我的代码给了我:
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);
}
}
});
使用 GeometryEngine 将地图点从地图坐标投影到地理坐标(即经度和纬度):
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
而不是 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();
- onSingleTap(final float x,
- final float y):(x,y) 是屏幕坐标,而不是地图坐标。
- mapPoint = mMapView.toMapPoint(x, y): (mapPoint.getX(),mapPoint.getY()) 是 map coordinate,但它不是 (lat,long)。 您必须使用 GeometryService 来投影它。