문제

층의 상징을 동적으로 변경하는 선호되는 방법은 무엇입니까? 내 웹 앱은 REST API를 통해 맵 서비스를 소비하지만 SOAP API 또는 ArcObjects (.NET)를 사용하는 것은 마음에 들지 않습니다.

도움이 되었습니까?

해결책

REST API는 SATENEST이므로 RESTFUL 서비스에 대한 연결을 통해 상징을 변경할 수 없습니다 (그래픽 레이어를 사용하여 다른 표시를 다르게 추출 할 수 있지만).

SOAP API를 사용하여 (웹 ADF를 통해 또는 SOAP를 통해 단순히 서비스에 연결)를 사용하여 기호를 변경하면 더 나은 행운을 얻을 수 있습니다. 이에 대한 자세한 내용은 다음을 참조하십시오. http://forums.esri.com/thread.asp?c=158&f=2421&t=266974

다른 팁

버전 2.0에서 Esri JS API에 기능 레이어가 존재했습니다.

ESRI API 샘플은 할당 된 고유 한 값 및 클래스 브레이크 렌더러를 통해 기능 레이어를 통해 동적 맵 서비스의 기본 상징을 변경하는 데 사용되는 렌더러의 사용을 보여줍니다. 기능 레이어는 그래픽 레이어 객체에서 파생되므로 다르게 렌더링됩니다 (플라이 IMG/타일 내보내기에서 클라이언트 측 대 서비스 '). 그럼에도 불구하고, 그들은 개발자 정의 된 필드/값을 기반으로 레이어 모양의 변경을 허용합니다.

동적 맵 서비스에서 고유 한 값 렌더링을 사용하십시오.

예 (코드) 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);

맵 서비스의 기호 모양을 자체적으로 변경하려면 SOAP API를 사용하는 WebADF를 사용하거나 자신의 서비스를 만들어야합니다. 기호를 변경 한 다음 이미지를 생성하는 실제 비트는 매우 쉽습니다. 어려운 부분은 열린 레이어를 사용하여 소비하는 것입니다. 나는 Michael이 제안한대로 귀찮게하거나 할 수 없을 것입니다. 클라이언트에게 그래픽을 가져 와서 OpenLayers를 사용하려는대로 그리는대로 맵 서비스에서 보이지 않도록 레이어를 설정하여 그래픽 아래에 표시되지 않도록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top