2009-11-18 53 views

回答

0

REST API是無狀態的,因此您無法通過與REST式服務的連接更改符號系統(儘管您可以使用圖形圖層來動態提取要以不同方式顯示的功能)。

使用SOAP API(通過Web ADF或簡單地通過SOAP手動連接到服務)並更改其中的符號體系,您將擁有更好的運氣。有關這方面的更多信息,請訪問:http://forums.esri.com/Thread.asp?c=158&f=2421&t=266974

+0

我使用的OpenLayers,這僅支持REST API和WMS。我不得不懷疑這是不是可能? –

+0

如果OpenLayers能夠查詢一個圖層並從中抓取一個圖形,並且還可以將特徵添加到與它所抓取的圖形相同的位置(使用適用於它的任何符號體系),那麼,是的,它應該工作。雖然我自己並不熟悉。 –

0

如果要更改地圖服務中自身的符號外觀,則需要使用WebADF或創建自己的使用SOAP API的服務。改變符號然後生成圖像的實際位很容易,難的部分將是然後讓開放的圖層消耗它。我不打擾或按照Michael的建議去做,並將圖形帶回客戶端,並根據需要使用OpenLayers繪製它們,也許圖層設置爲在地圖服務中不可見,以便它們不會顯示在圖形下。

1

從版本2.0開始,ESRI JS API中存在功能層。

ESRI API示例顯示使用渲染器來更改動態地圖服務的默認符號系統,通過要素圖層通過指定的唯一值&類別中斷渲染器。由於要素圖層是從圖形圖層對象派生的,因此它們呈現的方式不同(客戶端與服務在運行img/tile導出時)。儘管如此,它們確實允許根據開發人員定義的字段/值來更改圖層外觀。

注意運用獨特的價值呈現在這個動態的地圖服務:

例子(代碼)http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/renderer_unique_value.html

現場樣品 http://developers.arcgis.com/en/javascript/samples/renderer_unique_value/

var defaultSymbol = new esri.symbol.SimpleFillSymbol().setStyle(                          
esri.symbol.SimpleFillSymbol.STYLE_NULL); 
defaultSymbol.outline.setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL); 

    //create renderer 
    var renderer = new esri.renderer.UniqueValueRenderer(defaultSymbol, "SUB_REGION"); 

    //add symbol for each possible value 
    renderer.addValue("Pacific", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 0, 0, 0.5]))); 
    renderer.addValue("Mtn", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 255, 0, 0.5]))); 
    renderer.addValue("N Eng", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 0, 255, 0.5]))); 
    renderer.addValue("S Atl", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 0, 255, 0.5]))); 
    renderer.addValue("Mid Atl", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 255, 255, 0.75]))); 
    renderer.addValue("E N Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 255, 255, 0.5]))); 
    renderer.addValue("W N Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 255, 0, 0.5]))); 
    renderer.addValue("E S Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([127, 127, 127, 0.5]))); 
    renderer.addValue("W S Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 0, 0, 0.5]))); 

    var featureLayer = new esri.layers.FeatureLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/1", { 
     mode: esri.layers.FeatureLayer.MODE_ONDEMAND, 
     outFields: ["SUB_REGION"] 
    }); 

    featureLayer.setRenderer(renderer); 
    map.addLayer(featureLayer);