【问题标题】:ArcGis javascript api, need to change Wkid of the Graphics layerArcGis javascript api,需要更改Graphics层的Wkid
【发布时间】:2013-06-12 06:18:57
【问题描述】:

我正在使用 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 但它不起作用。我正在以正确的方式工作或其他我必须做的事情。

提前致谢。

【问题讨论】:

    标签: javascript arcgis arcgis-js-api


    【解决方案1】:

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

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

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

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

    findParams.outSpatialReference = map.spatialReference;

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

    【讨论】:

    • 谢谢西蒙 :) 我成为你的粉丝了。
    • 别担心,如果答案有帮助,请点击赞成票,如果解决了问题,请点击:) 如果没有解决问题,请告诉我!
    • 对不起,西蒙,当我赚到的钱比我会投票的时候,我没有太多的声誉可以投票。
    猜你喜欢
    • 2016-11-23
    • 2021-10-21
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多