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';

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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.