Arcgis API for JS:更改图形图层的空间参考
Arcgis API for JS : change spatial reference of graphic layer
我的应用程序包含要素层和图形层,它们没有相同的空间参考(即 102110 和 4326)。
我的地图与我的要素图层 (102110) 具有相同的空间参考。
我无法将我的图形图层 (4326) 的空间参考转换为我的地图和要素图层之一。
你有什么想法可以帮助我吗?
谢谢
GraphicsLayer
或 FeatureLayer
中没有任何 SpatialReference
信息。空间参考是 geometry/graphic 对象和地图的一部分。
FeatureLayer 的 SpatialReference 与地图匹配:
When requests are made for features from a service, the map's spatial
reference will be included which tells the service to re-project
features before sending them to the client.
而 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]);
}
});
});
我的应用程序包含要素层和图形层,它们没有相同的空间参考(即 102110 和 4326)。 我的地图与我的要素图层 (102110) 具有相同的空间参考。 我无法将我的图形图层 (4326) 的空间参考转换为我的地图和要素图层之一。 你有什么想法可以帮助我吗? 谢谢
GraphicsLayer
或 FeatureLayer
中没有任何 SpatialReference
信息。空间参考是 geometry/graphic 对象和地图的一部分。
FeatureLayer 的 SpatialReference 与地图匹配:
When requests are made for features from a service, the map's spatial reference will be included which tells the service to re-project features before sending them to the client.
而 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]);
}
});
});