JSAPI - Wie füge ich eine Grafik über eine andere Grafik in derselben Ebene hinzu?

8

Ich habe eine Grafikebene und möchte eine Grafik hinter den vorhandenen Grafiken hinzufügen . Ich habe mir Folgendes ausgedacht:

graphicsLayer.add(overlay.graphic);
graphicsLayer.graphics.unshift(graphicsLayer.graphics.pop());

Aber ich muss die Markierungen vom Bildschirm schwenken und sie dann wieder sichtbar machen, bevor die Grafik ohne Verschiebung korrekt angezeigt wird. Ich habe versucht, die Aktualisierung ohne Auswirkungen aufzurufen:

graphicsLayer.refresh();

Wie geht das ohne Einführung einer zweiten Grafikebene?

ca0v
quelle

Antworten:

10

Grafiken in einem GraphicsLayer (sowie in einem FeatureLayer) sind dojx.gfx-Objekte. Jede Grafik verfügt über eine getDojoShape- Methode. Dies ist der Schlüssel zum Ändern der Zeichenreihenfolge Ihrer Grafiken.

Ich habe ein funktionierendes Beispiel für jsfiddle erstellt: http://jsfiddle.net/fKwRn/

Klicken Sie auf die Karte, um einen Punkt hinzuzufügen. Der neueste Punkt wird immer unter den vorhandenen Punkten hinzugefügt.

Derek Swingley
quelle
3

Meine Güte, ich hoffe, das ist nicht die richtige "Antwort":

graphicsLayer.acme = {
    addFirst: function (graphic)
    {
        graphicsLayer.graphics.unshift(graphic);
        graphic._graphicsLayer = graphicsLayer;
        graphicsLayer._updateExtent(graphic);
        graphicsLayer.onGraphicAdd(graphic);
    },
    redraw: function ()
    {
        var graphics = dojo.filter(graphicsLayer.graphics, function (item)
        {
            return item.visible;
        });
        dojo.forEach(graphics, function (item)
        {
            graphicsLayer.remove ( item );
        });
        dojo.forEach(graphics, function (item)
        {
            graphicsLayer.add(item);
        });
    }
};

Ich habe eine addFirst-Methode eingeführt, um die Grafik an der Vorderseite des Grafikarrays hinzuzufügen, und eine Redraw-Methode, um alle sichtbaren Grafiken aus der Ebene zu entfernen und sie wieder zur Ebene hinzuzufügen. Das kann nicht gut sein.

ca0v
quelle
2
Dies wird nicht empfohlen. Bitte halten Sie sich an die öffentlich dokumentierten Methoden. Meine Antwort erklärt, wie man eine Grafik unter / hinter vorhandenen Grafiken hinzufügt.
Derek Swingley