ArcGis javascript api,需要更改Graphics层的Wkid

Rah*_*pta 3 javascript arcgis arcgis-js-api

我正在使用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: ["*"]
        });
Run Code Online (Sandbox Code Playgroud)

而在这一层搜索我正在使用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);
        });         
    }
Run Code Online (Sandbox Code Playgroud)

所以它是在地图中添加功能,但在图像中的错误位置![在图像功能在不同的地方,图形在不同的地方] [1]

sory我没有足够的声望点发布图片?请检查我的照片我已用我的照片替换图像

我分析然后我才知道wkid的结果是负责任的.我检查了wkid.我的图层有wkid编号"26912",图形层有wkid编号4326.

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

提前致谢.

Kat*_*ate 6

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

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

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

或者,从地图上直接拿出来:

findParams.outSpatialReference = map.spatialReference;

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