我使用的是arcgis javascript apis 3.5,我的代码是
function init() {
map = new esri.Map("mapDiv", {
basemap: "streets",
center: [-112.07102547942392, 46.75909704205151],
zoom: 12,
slider: false
});
var featureLayer = new esri.layers.FeatureLayer("http://abc/arcgis/rest/services/MTARNG/MapServer/0", {
mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
outFields: ["*"]
});
并且在此图层中搜索我正在使用findtask。代码在这里
findTask = new esri.tasks.FindTask("http://abc/arcgis/rest/services/MTARNG/MapServer");
findParams = new esri.tasks.FindParameters();
findParams.returnGeometry = true;
findParams.layerIds = [0];
findParams.searchFields = ["LOCATION", "PROJECT_PARCEL_NAME"];
findParams.searchText = "north portion";
findTask.execute(findParams, showResults);
function showResults(results) {
var markerSymbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1), new dojo.Color([0, 255, 0, 0.25]));
map.graphics.clear();
dojo.forEach(results, function (result) {
var graphic = result.feature;
if (graphic.geometry != null) {
switch (graphic.geometry.type) {
case "point":
graphic.setSymbol(markerSymbol);
break;
}
}
map.graphics.add(graphic);
});
}
所以它在地图中添加了这些功能,但是在图像中的错误位置 ![图像中的特征位于不同的位置,图形位于不同的位置] [1]
sory我没有足够的声望点发布图片?请检查我的照片我用照片替换图像
我分析然后我才知道wkid的结果是负责任的。 我检查了wkid。我的图层有wkid编号“26912” 和图形层有wkid编号4326。
所以我会做什么,我只是尝试改变wkid,但它不起作用。我正在以正确的方式或我必须做的任何事情工作。
提前感谢。
答案 0 :(得分:6)
图形层从地图中获取它的wkid,并且地图(默认情况下)将它的wkid设置为您加载的第一个栅格图层(在您的情况下为基本地图)。正如你所看到的那样,这是4326,它被ESRI用于它的所有基础地图(我认为)。您无法更改地图的wkid,因为无法重新投影栅格图层(平铺图层)。
解决这个问题的一种方法是让FindTask在你想要的wkid中返回它的结果,例如: 4326.为此,请使用FindParameters的outSpatialReference:
findParams.outSpatialReference = new esri.SpatialReference({wkid:4326});;
或者,从地图上直接拍摄:
findParams.outSpatialReference = map.spatialReference;
然后,结果应该在返回之前由服务器重新投影到4326,因此要在正确的系统中添加到地图图层。