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

时间:2013-06-12 06:18:58

标签: 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: ["*"]
        });

并且在此图层中搜索我正在使用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,但它不起作用。我正在以正确的方式或我必须做的任何事情工作。

提前感谢。

1 个答案:

答案 0 :(得分:6)

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

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

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

或者,从地图上直接拍摄:

findParams.outSpatialReference = map.spatialReference;

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