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」があり、グラフィックスレイヤーにはwkid番号4326があります。

だから私は何をしますか、wkidを変更しようとしていますが、うまくいきません。私は正しい方法または私がしなければならない他の何かに取り組んでいます。

前もって感謝します。

4

1 に答える 1

6

グラフィックスレイヤーはマップから wkid を取得し、マップ (デフォルト) は、ロードした最初のラスターレイヤー (この場合はベースマップ) の wkid に設定します。ご覧のとおり、これは 4326 で、ESRI がすべてのベース マップに使用しています (私が思うに)。ラスター レイヤー (タイル レイヤー) は再投影できないため、マップの wkid を変更することはできません。

これを解決する 1 つの方法は、FindTask が希望する wkid で結果を返すようにすることです (例: 4326)。これを行うには、FindParameters の outSpatialReference を使用します。

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

または、地図から直接取得します。

findParams.outSpatialReference = map.spatialReference;

結果は、返される前にサーバーによって 4326 に再投影される必要があるため、マップ グラフィック レイヤーに追加する正しいシステムになります。

于 2013-06-12T07:14:17.137 に答える