3

我正在使用 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]

抱歉,我没有足够的声誉点来发布图片?请检查我的照片我已将图像替换为我的照片

我分析然后我才知道wkid的结果是负责任的。我检查了wkid。我的图层的 wkid 编号为“26912”,graphicslayer 的 wkid 编号为 4326。

所以我会做什么,我只是尝试更改 wkid,但它不起作用。我正在以正确的方式工作或其他我必须做的事情。

提前致谢。

4

1 回答 1

6

图形图层从地图中获取它的 wkid,并且地图(默认情况下)将它的 wkid 设置为您加载的第一个栅格图层的 wkid,在您的情况下为基本地图。如您所见,这是 4326,ESRI 将其用于所有基本地图(我认为)。您无法更改地图的 wkid,因为无法重新投影栅格图层(平铺图层)。

解决此问题的一种方法是让 FindTask 在您想要的 wkid 中返回它的结果,例如 4326。为此,请使用 FindParameters 的 outSpatialReference:

findParams.outSpatialReference = new esri.SpatialReference({wkid:4326});;

或者,直接从地图中获取:

findParams.outSpatialReference = map.spatialReference;

然后,结果应在返回之前由服务器重新投影到 4326,以便在正确的系统中添加到地图图形图层。

于 2013-06-12T07:14:17.137 回答