Wykres w wyskakującym oknie w JavaScript

Odpowiedzi:

1

Myślę, że to możliwe. Widzę ten przykład na stronie głównej Ulotki:

// add a marker in the given location, attach some popup content to it and open the popup
L.marker([51.5, -0.09]).addTo(map)
    .bindPopup('A pretty CSS3 popup. <br> Easily customizable.').openPopup();

Możesz więc dodać znaczniki jako treść. Zobacz tag br powyżej.

// add a marker in the given location, attach some popup content to it and open the popup
L.marker([51.5, -0.09]).addTo(map)
    .bindPopup('A pretty CSS3 popup. <div class="popup_custom_div"></div> Easily customizable.').openPopup();
//retrieve the div by class name take care if more then one maybe opened
var mydiv = document.getElementsByClassName( 'popup_custom_div' )[0];
mydiv.innerHTML = 'I am here';
Cavila
źródło
2

Odpowiedź @cavila jest tylko częścią rozwiązania. Możesz umieścić tag div dla wykresu w wyskakującym okienku, ale problem pojawia się wtedy, ponieważ będziesz musiał odsłuchać zdarzenie „.openPopup ()”, aby następnie wykonać javascript raphy-carts. Jeśli nie zrobisz tego w tym zdarzeniu, to po uruchomieniu nie znajdzie znacznika div, ponieważ nie został wstawiony do DOM. Wygląda na to, że ulotka obsługuje nasłuchiwanie zdarzeń, więc musisz dodać coś takiego do powyższego kodu:

map.on('popup', function(e) {
    //Run the chart code here like this
    var chart = new Charts.LineChart('chart1');
     chart.add_line({
        data: [[1, 828906, {tooltip: "my special point"}],[2, 566933],[3, 584150],[4,  
                 1072143],[5, 1622455],[6, 2466746],[7, 2427789]]
        });

     chart.draw();
});
Jamie
źródło
Więc openPopup () jest asynchroniczny? Ponieważ interpreter JavaScript nie wykona następnej instrukcji do czasu poprzedniego powrotu, z wyjątkiem wywołań zwrotnych, które są wykonywane później. Alternatywą, jeśli żadne zdarzenie nie zostanie wykonane w puli dla istnienia tego „div” w pętli window.setTimeout. Odwołanie zdarzenia byłoby znacznie szybsze.
cavila 27.12.12
1

Jednym ze sposobów byłoby nasłuchiwanie zdarzeń kliknięć u twórców i tworzenie wykresów w locie. Oto przykład: http://jsfiddle.net/6UJQ4/

Jedną z rzeczy, które nie były dla mnie jasne, dopóki nie zacząłem się bawić, jest to, że bindPopup Leafleta może pobrać ciąg znaków lub węzeł DOM. Powyższy przykład tworzy węzeł DOM, przekazuje go do bindPopup, a następnie tworzy wykres.

Derek Swingley
źródło
Czy jest to możliwe w przypadku zdarzeń wielokąta? Po kliknięciu wielokąta pojawia się podobne okienko?
przeciwprąd
Tak, powinno być możliwe. Mój przykład jest na stałe ustawiony na 50 jako wartość wykresu, ale możesz zrobić wszystko, co chcesz w funkcji, która tworzy wykres.
Derek Swingley
Czy możesz napisać przykład z danymi wielokątów lub danych geojson na jsfiddle w ten sposób ze znacznikami? Byłbym bardzo wdzięczny.
przeciw przepływowi