Pergunta

O que é o método preferencial de alterar uma camada simbologia dinamicamente?Minha web app consome um serviço de mapas através da API REST, mas eu não me importo de usar a API SOAP ou ArcObjects (.NET).

Foi útil?

Solução

A API REST é apátrida, para que você não possa alterar a simbologia por meio de uma conexão com um serviço RESTful (embora você possa usar uma camada gráfica para extrair dinamicamente os recursos que deseja exibir de maneira diferente).

Você terá mais sorte usando a API SOAP (através do ADF da Web ou simplesmente se conecta ao serviço via SOAP manualmente) e alterando a simbologia lá. Mais informações sobre isso estão disponíveis aqui: http://forums.esri.com/thread.asp?c=158&f=2421&t=266974

Outras dicas

A partir da versão 2.0, o recurso de camadas existia na ESRI JS API.

A ESRI API exemplos mostram o uso de processadores a ser utilizado para alterar o padrão de simbologia para o mapa dinâmico de serviços através de recurso de camadas através atribuído valor exclusivo & quebras de classe processadores.Como recurso de camadas são derivados a partir de gráficos camada de objeto, eles processam de forma diferente (do lado do cliente vs.serviços' on the fly img/telha de exportação).No entanto, eles não permitem a alteração de um camadas aparência, com base na desenvolvedor campos/valores.

Nota: a utilização de um único valor render em um mapa dinâmico em:

exemplo (código) http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/renderer_unique_value.html

viver de exemplo 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);

Se você deseja alterar a aparência do símbolo no serviço de mapa, é necessário usar o webadf ou criar seu próprio serviço que use a API SOAP. O bit real para alterar o símbolo e produzir uma imagem é bastante fácil, a parte difícil será obter camadas abertas para consumi -la. Eu não me incomodaria ou faria como Michael sugere e trazia de volta gráficos para o cliente e os desenhava como você deseja usar o OpenLayers, talvez tenha a camada definida como invisível no serviço de mapa, para que eles não apareçam sob os gráficos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top