2013-06-12 34 views
3

我使用的ArcGIS的JavaScript API 3.5和我的代碼的WKID是的ArcGIS的JavaScript API,需要改變圖形層

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。我的圖層有更多的數字「26912」 和圖形圖層已經wkid號碼4326.

所以我會做什麼,我只是試圖改變wkid,但它不工作。我正在正確的方式或其他任何我必須做的事情。

在此先感謝。

回答

6

圖形層從地圖獲取它,並且地圖(默認情況下)將其設置爲您加載的第一個柵格圖層,在您的情況下爲底圖。正如你所看到的,這是4326,ESRI使用它的所有基本地圖(我認爲)。由於無法重新投影柵格圖層(平鋪圖層),因此無法更改地圖的wkid。

解決此問題的一種方法是使FindTask將結果返回到您想要的wkid中,例如, 4326要做到這一點,使用FindParameters的outSpatialReference:

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

,或者把它直接從地圖:

findParams.outSpatialReference = map.spatialReference;

結果應該再由服務器進行重投影到4326在返回之前,因此要在正確的系統中添加到地圖圖層中。

+0

謝謝西蒙:)我成爲你的粉絲。 –

+0

不用擔心,如果答案有幫助,請單擊上面的投票,如果它解決了問題,請點擊勾號如果解決不了,請告訴我! – Kate

+0

sory西蒙我沒有太多的投票聲望,當我將獲得比我的投票。 –

相關問題