Ответ
Не проецируйте точку в WGS 1984. Используйте точку, которую вам возвращает MapView.toMapPoint(double, double)
.
Подробное объяснение
В ArcGIS Runtime 10.2.x для Android объект Point
не отслеживает свою пространственную привязку. На самом деле это просто значение x и значение y. Если вы зададите Point
для MapView
, MapView
будет предполагать, что Point
находится в той же пространственной привязке, что и карта, которая по умолчанию обычно используется в Web Mercator.
Вот что делает ваш код:
Point mapPoint=view.toMapPoint(point.getX(), point.getY());
mapPoint
теперь является точкой в пространственной привязке MapView
, которая, вероятно, является Web Mercator. Эта точка, вероятно, находится на расстоянии нескольких миллионов метров от (0, 0), но поскольку класс Point
блаженно не знает о пространственных привязках, он просто содержит значение x в миллионах и значение y в миллионах, без единиц измерения .
SpatialReference sp = SpatialReference.create(SpatialReference.WKID_WGS84);
Point p1Done=(Point) GeometryEngine.project(mapPoint, view.getSpatialReference(), sp);
p1Done
теперь является точкой в WGS 1984, которая является некоторым числом градусов от (0, 0). У вас есть комментарий, в котором говорится, что значение x равно -3.0246720297389555, а значение y равно 40.83564363734672, или, может быть, наоборот, но важно отметить, что значение x находится в диапазоне от -180 до 180, а значение y равно от -90 до 90 без единиц измерения .
UtilsMapa.addPoint(p1Done, view, "Marker",view.getGraphicLayer());
Ваш вспомогательный метод вызывается с p1Done
, который называется point
в вашем вспомогательном методе.
Graphic graphic=new Graphic(point,simpleMarker);
Рисунок создается с точкой, значение x которой равно -3.0246720297389555, а значение y равно 40.83564363734672.
gLayer.addGraphic(graphic);
Графика добавляется в графический слой, который имеет пространственную привязку карты, на которой он находится, - вероятно, это Web Mercator. На карте правильно отображаются точки -3.024672029738955 метров к западу от (0, 0) и 40,83564363734672 метров к северу от (0, 0).
Примечание: обновление до ArcGIS Runtime 100.x
Если бы вы использовали Runtime 100.x, вы могли бы избежать этой проблемы, поскольку геометрии Runtime 100.x, включая Point
, отслеживают их пространственную привязку.