Динамическое изменение символов слоя карты (ArcGIS Server) - PullRequest
1 голос
/ 19 ноября 2009

Каков предпочтительный метод динамического изменения символов слоя? Мое веб-приложение использует картографический сервис через REST API, но я не против использовать SOAP API или ArcObjects (.NET).

Ответы [ 3 ]

1 голос
/ 27 марта 2013

Начиная с версии 2.0, в ESRI JS API существовали слои объектов.

Примеры API ESRI показывают использование средств визуализации, используемых для изменения символов по умолчанию для сервисов динамической карты через слои объектов через назначенные средства визуализации с уникальным значением и разрывами классов. Так как слои объектов являются производными от объекта графического слоя, они отображаются по-разному (сторона клиента и службы 'на лету, экспорт 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);
0 голосов
/ 13 мая 2010

Если вы хотите изменить внешний вид символа в картографическом сервисе, то вам нужно либо использовать WebADF, либо создать свой собственный сервис, который использует SOAP API. Реальный бит, чтобы изменить символ и затем создать изображение, довольно прост, сложная часть состоит в том, чтобы затем получить открытые слои для его использования. Я бы не стал беспокоиться или поступить так, как предлагает Майкл, и вернуть графику клиенту и нарисовать ее, как вы хотите, используя OpenLayers, возможно, установив слой невидимым в картографическом сервисе, чтобы они не отображались под графикой.

0 голосов
/ 19 ноября 2009

REST API не имеет состояния, поэтому вы не можете изменить символы через соединение с сервисом RESTful (хотя вы можете использовать графический слой для динамического извлечения функций, которые вы хотите отображать по-разному).

Вам больше повезет, если вы будете использовать SOAP API (через веб-ADF или просто подключиться к сервису через SOAP вручную) и изменить там символы. Более подробная информация об этом доступна здесь: http://forums.esri.com/Thread.asp?c=158&f=2421&t=266974

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...