2016-08-23 3 views
0

У меня есть приложение со слоями функций и графическими слоями, которые не имеют одинаковой пространственной привязки (т.е. 102110 и 4326). Моя карта имеет ту же пространственную ссылку, что и мои слои объектов (102110). Я не могу превратить пространственную привязку моих графических слоев (4326) в одну из моих карт и объектов слоев. У вас есть идеи, чтобы помочь мне? Спасибо.ArcGIS API для JS: изменение пространственной привязки графического слоя

ответ

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

});