2013-09-19 2 views
2

У меня есть приложение для Android, которое использует офлайн-карту arcgis, а с другой стороны у меня есть карта бинга. Мне нужно отправить местоположение на компьютер, когда я просто коснусь карты. Мне удалось сделать вывод, но я не мог понять, как преобразовать его в местоположение, которое понимается на картах google. Я сделал тост представить выбранное местоположение, мой код дает мне:преобразование из карты arcgis map x и y в карты google или карты bing location

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); 
     } 
    } 
}); 

ответ

3

Использование GeometryEngine проекта Mappoint от координаты на карте географических координат (т.е. широты и долготы):

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

Если вы держите свой Тост, вы будете хотеть использовать долготы и широты вместо х и y в строке Toast.

UPDATE

Если у вас есть 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(); 
+1

я есть просто мой собственный класс Геометрия, имеющий Двойной x; Double y; int wkid; // для SpatialReference .... Теперь, как использовать GeometryEngine.project(), используя эти данные? –

+0

@YasirAli: хороший вопрос. Я обновил свой ответ, чтобы ответить на ваш вопрос. –

0
  • onSingleTap (конечный поплавок х, конечное поплавок у): (х, у) экран координат, а не карту координат.
  • mapPoint = mMapView.toMapPoint (x, y): (mapPoint.getX(), mapPoint.getY()) - координата карты, но это не (lat, long). вы должны использовать GeometryService для его проекта.
Смежные вопросы