Frage

Was ist die bevorzugte Methode einer Ebene Symbologie dynamisch zu verändern? Meine Web-App verbraucht einen Karten-Service über die REST-API, aber ich bin nicht dagegen die SOAP-API oder ArcObjects verwenden (.NET).

War es hilfreich?

Lösung

Das REST-API ist staatenlos, so dass Sie nicht die Symbologie über eine Verbindung zu einem RESTful Service ändern können (obwohl Sie eine Grafikschicht verwenden könnten, um dynamisch zu extrahieren die Funktionen, die Sie anders angezeigt werden sollen).

Sie werden mehr Glück haben den SOAP-API (über das Web ADF oder einfach zum Service über SOAP Anschluss manuell) und die Symbologie dort zu verändern. Weitere Informationen hierzu finden Sie hier: http: //forums.esri. com / Thread.asp? c = 158 & f = 2421 & t = 266974

Andere Tipps

Ab Version 2.0, Feature-Layer in der ESRI JS API vorhanden war.

ESRI API Beispiele zeigen die Verwendung von Renderer die Standard-Symbologie für dynamische Kartendienste über Feature-Layer durch zugewiesene eindeutigen Wert & Klassen Pausen Renderer ändern verwendet werden. Als Feature-Layer aus dem Grafik-Layer-Objekt abgeleitet ist, machen sie anders (Client-Seite vs. Dienstleistungen on the fly img / Fliese Export). Dennoch haben sie die Veränderung eines Schichten Aussehen basiert auf Entwickler definierten Felder / Werte ermöglichen.

Beachten Sie die Verwendung eines einzigartigen Wert machen auf einem dynamischen Karten-Service in diesem:

Beispiel (Code) http: //help.arcgis. com / de / WebAPI / javascript / arcgis / jssamples / renderer_unique_value.html

Live-Probe 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);

Wenn Sie das Aussehen des Symbols in dem Kartendienst seine selbst ändern wollen, dann müssen Sie entweder die WebADF oder Ihren eigenen Dienst erstellen, den das SOAP-API verwendet. Die tatsächliche Bit, das Symbol zu ändern und erzeugt dann ein Bild ganz einfach ist, der harte Teil sein wird, dann öffnen Schichten zu erhalten, um es zu konsumieren. Ich würde auch nicht stören oder zu tun, wie Michael schlägt vor und bringt Grafiken an den Client und zieht sie, wie Sie wollen Openlayers verwenden, müssen vielleicht den Ebenensatz unsichtbar im Karten-Service, so dass sie nicht zeigen, unter den Grafiken auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top