Bagaimana cara mengatur warna poligon di Leaflet.js secara dinamis?

9

Saya menggunakan contoh kloropat interaktif untuk leaflet.js

Saya menemukan cara untuk membuat setiap poligon saya menambahkan penghitungan nilai yang berjalan ke bagian bawah halaman setelah setiap poligon diklik.

Setelah mengklik poligon yang dipilih untuk kedua kalinya itu menghilangkan nilainya dari penghitungan berjalan.

Saya ingin menggambarkan ini secara visual sebagai perubahan warna poligon pada peta.

Inilah kode saya sejauh ini (termasuk javascript dengan PHP): (Saya sudah memasukkan komentar dalam kode saya untuk menjelaskan apa yang saya coba lakukan. Sekali lagi bantuan apa pun akan sangat dihargai)

function addUp(num, x)
{  
    <?php 
    // begin php code

    $places = $db->query("SELECT boundary_id, boundary_name FROM boundaries WHERE               
    boundary_state= '$thatstate'");

    while($row = $places->fetch_object()) { 
       //end php code ?> 
       //begin javascript
       if (x == "List<?php echo $row->boundary_name ?>" && List<?php echo $row->boundary_name  ?> == 1) {

           temp = document.theForm.ttl.value;
           tempo = parseInt(temp);
           numo = parseInt(num);
           nwTemp = tempo + numo;
           document.theForm.ttl.value = nwTemp;
           geojson.setStyle({fillColor: 'blue'}); // I want to set color to blue to show  highlighted

           List<?php echo $row->boundary_name ?> = 0;

           return List<?php echo $row->boundary_name ?>;
    }


    if (x == "List<?php echo $row->boundary_name ?>" && List<?php echo $row->boundary_name  ?> == 0) {

        temp = document.theForm.ttl.value;
        tempo = parseInt(temp);
        numo = parseInt(num);
        nwTemp = tempo - numo;
        document.theForm.ttl.value = nwTemp;

        // I want to reset color of polygon if deselected (this would be   the default)
        geojson.resetStyle; 

        List<?php echo $row->boundary_name ?> = 1; 
    }   
}
alex
sumber
Selamat datang di Sistem Informasi Geografis , Alex! Ini mungkin tempat yang tepat untuk pertanyaan Anda, jadi jika Anda masih memiliki salinan yang diposting di SO, silakan hapus itu. Jika setelah waktu yang masuk akal (satu atau dua hari) Anda tidak mendapatkan jawaban yang baik di sini, cukup tandai pertanyaan ini untuk perhatian moderator dan kami dapat memindahkannya kembali ke SO (atau di mana pun sesuai). Ini akan menjaga pertanyaan Anda bersama dengan komentar atau jawaban parsial apa pun yang menarik saat itu, alih-alih memaksa Anda untuk memulai kembali dari setiap situs yang berbeda.
whuber

Jawaban:

13

Anda dapat mengubah warna isian poligon dengan setStylemetode (diwarisi dari Path ).

polygon.setStyle({fillColor: '#0000FF'});

Jika Anda kesulitan menampilkan geojson dengan benar, Anda dapat melihat pada dokumen Leaflet GeoJSON .

sfletche
sumber
Hum ... dan untuk mengisi transparan, beberapa petunjuk?
Peter Krauss
1

Ada juga jsfiddle yang saya temukan . Saya tidak bisa mengklaimnya sebagai milik saya, tetapi Anda dapat menyortir objek pilihan melalui event.target.optionsatau bahkan mengatur atribut warna untuk acara targetevent.target.setAttribute()

daniella
sumber