JSAPI - bagaimana cara menambahkan grafik di atas grafik lain di lapisan yang sama?

8

Saya memiliki layer grafis dan saya ingin menambahkan grafik di belakang grafik yang ada. Saya datang dengan ini:

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

Tapi saya harus menggeser spidol dari layar dan kemudian menggesernya kembali ke tampilan sebelum tampilan grafik 'unshift'-ed dengan benar. Saya sudah mencoba menelepon menyegarkan tanpa pengaruh apa pun:

graphicsLayer.refresh();

Bagaimana ini bisa dilakukan tanpa memperkenalkan lapisan grafis kedua?

ca0v
sumber

Jawaban:

10

Grafik dalam GraphicsLayer (dan juga di FeatureLayer) adalah objek dojx.gfx. Setiap Grafik memiliki metode getDojoShape . Ini adalah kunci untuk mengubah urutan gambar grafik Anda.

Saya memasang contoh kerja di jsfiddle: http://jsfiddle.net/fKwRn/

Klik peta untuk menambahkan titik. Poin terbaru selalu ditambahkan di bawah poin yang ada.

Derek Swingley
sumber
3

Ya ampun, saya harap ini bukan "jawaban" yang benar:

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);
        });
    }
};

Saya memperkenalkan metode addFirst untuk menambahkan grafik ke bagian depan array grafik dan metode redraw untuk menghapus semua grafik yang terlihat dari layer dan menambahkannya kembali ke layer. Itu tidak baik.

ca0v
sumber
2
Ini tidak disarankan. Harap tetap menggunakan metode publik yang didokumentasikan. Jawaban saya menjelaskan bagaimana cara menambahkan grafik di bawah / di belakang grafik yang ada.
Derek Swingley