У меня есть приложение со слоями функций и графическими слоями, которые не имеют одинаковой пространственной привязки (т.е. 102110 и 4326). Моя карта имеет ту же пространственную ссылку, что и мои слои объектов (102110). Я не могу превратить пространственную привязку моих графических слоев (4326) в одну из моих карт и объектов слоев. У вас есть идеи, чтобы помочь мне? Спасибо.ArcGIS API для JS: изменение пространственной привязки графического слоя
0
A
ответ
0
GraphicsLayer
или FeatureLayer
не имеет SpatialReference
информация в них. Пространственные ссылки также являются частью геометрии/графических объектов и Карты.
SpatialReference из FeatureLayer совпадает с картой:
Когда запросы сделаны от особенностей службы, пространственная ссылки для этой карты будет включена повествующей службу повторно проект особенности перед отправкой их в клиент.
Принимая во внимание, что GraphicsLayer
поддерживаются полностью в пределах приложения. Разработчик должен обеспечить соответствие прогнозов перед добавлением графики на карту. Чтобы изменить проекционную систему, вы можете использовать GeometryService
, ниже - образец.
require(["dojo/_base/array", "esri/tasks/GeometryService", "esri/tasks/ProjectParameters", "esri/SpatialReference"], function(GeometryService, ProjectParameters, array) {
var geometries = array.map(graphicsLayer.graphics, function(graphic){
return graphic.geometry;
});
var gsvc = new GeometryService("https://utility.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
var outSR = new SpatialReference({wkid:102110});
var params = new ProjectParameters();
params.geometries = geometries ;
params.outSR = outSR;
params.transformation = transformation;
gsvc.project(params, function(projectedGeometries){
for(var i = 0; i < projectedGeometries.length;i++){
graphicsLayer.graphics[i].setGeometry(projectedGeometries[i]);
}
});
});