Membangun legenda dinamis khusus menggunakan ArcGis-server js dan dynamicMapServiceLayer

8

Saya memiliki dynamicMapServiceLayer yang saya gunakan untuk membangun aplikasi peta. Ada sekitar 10 lapisan dalam layanan peta yang saya beralih menggunakan tindakan setVisibleLayers.

Saya ingin membuat legenda peta dinamis kustom saya sendiri. Saat visiblity layer diubah, item legenda yang sesuai juga akan menyembunyikan () / tampilkan ()

MapServer saya memiliki url yang tertaut ke halaman dengan semua item legenda yang sesuai seperti di bawah ini kecuali url legenda saya memiliki 10 item legenda

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer/legend

Apakah ada cara saya dapat mengakses item legenda individu (Nama dan simbol) dari mapServer yang ada? Saya merasa nyaman membangun legenda, saya hanya perlu tahu cara mengakses simbol layer yang kemudian akan saya tambahkan ke dialog legenda.

Saya juga harus menyebutkan bahwa saya menghindari menggunakan DOJO dan menggunakan javascript dan jQuery murni.

jotamon
sumber

Jawaban:

7

Jika Anda mengakses layanan itu melalui REST API:

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer/legend?f=json&pretty=true

Anda bisa mendapatkan JSON menggunakan jQuery http://api.jquery.com/jQuery.getJSON/ Jadi buatlah legenda itu sendiri dari data yang telah Anda ambil.

Untuk menambahkan simbol legenda, Anda dapat menggunakan jQuery untuk membuat img, dan menyisipkan contentType dan imageData setiap item legenda ke dalam src untuk merender simbol.

/programming/5000710/receive-image-data-as-json-and-injecting-it-into-the-dom/5000778#5000778

Masuk akal?

stu
sumber
Aku ... ini kedengarannya bagus. biarkan saya mundur untuk sementara waktu dan lihat bagaimana hasilnya
jotamon
Beberapa hal. Pertama, jangan gunakan pretty = true karena tidak perlu dan menggunakan sumber daya server tambahan. Kedua, Anda bisa mendapatkan simbol layer dengan mendapatkan simbol render.symbol atau array dari renderer.infos []. Tetapi perlu diingat bahwa pembuat peta mungkin menggunakan 'SimpleMarkerSymbol', 'SimpleCircleSymbol' dll.
Jim Wharton