我有一个应用程序,其功能层和图形层不具有相同的空间参考(即102110和4326)。 我的地图与我的要素图层具有相同的空间参考(102110)。 我无法将图形图层(4326)的空间参考转换为我的地图和要素图层之一。 你有什么想法帮助我吗? 感谢。
答案 0 :(得分:0)
GraphicsLayer
或FeatureLayer
中没有任何SpatialReference
信息。空间参考也是几何/图形对象和Map的一部分。
FeatureLayer的SpatialReference与map匹配:
当请求服务中的要素时,地图的空间 将包括参考,告知服务重新投影 在将它们发送给客户之前的功能。
然而,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]);
}
});
});