Javascript'te açılır pencerenin içindeki grafik


Yanıtlar:


1

Sanırım bu mümkün. Bu örneği Leaflet'in ana sayfasında görüyorum:

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

Böylece işaretlemeyi içerik olarak ekleyebilirsiniz. Yukarıdaki br etiketine bakın.

// 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

@Cavila'nın yanıtı çözümün sadece bir parçası. Grafiğin div etiketini açılır pencereye koyabilirsiniz, ancak sorun ortaya çıkar, çünkü raphy-carts javascript'in çalıştırılması için ".openPopup ()" olayını dinlemeniz gerekir. Bu olayda bunu yapmazsanız, yürütüldüğünde div etiketi bulunmaz çünkü DOM'a eklenmez. Broşür olay dinlemeyi destekliyor gibi görünüyor, bu nedenle yukarıdaki koda böyle bir şey eklemeniz gerekecek:

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

Yani openPopup () eşzamansız mı? Çünkü Javascript yorumlayıcısı, daha sonra zamanında yürütülecek geri çağrılar hariç, bir önceki ifadeye kadar bir sonraki ifadeyi yürütmeyecektir. Herhangi bir olay yoksa, bir window.setTimeout döngüsünde bu "div" ın varlığı için havuz oluşturulamaz. Olay geri araması çok daha hızlı olacaktır.
cavila

1

Bunun bir yolu, yapımcılarınızdaki tıklama etkinliklerini dinlemek ve grafikleri anında oluşturmaktır. İşte bir örnek: http://jsfiddle.net/6UJQ4/

Oynamaya başlayana kadar net olmayan bir şey, Leaflet'in bindPopup'unun bir dize veya bir DOM düğümü alabilmesidir . Yukarıdaki örnek bir DOM düğümü oluşturur, bindPopup öğesine iletir ve ardından grafiği oluşturur.


Çokgen olayları için bu mümkün müdür? Bir çokgene tıklandığında, benzer bir açılır pencere görünüyor mu?
akış

Evet, mümkün olmalı. Örneğim, grafiğin değeri olarak 50'yi kullanmak için kodlanmış ancak grafiği oluşturan işlev içinde istediğiniz her şeyi yapabilirsiniz.
Derek Swingley

Lütfen jsfiddle üzerine işaretçileri olan çokgenler veya geojson verileri içeren bir örnek yazabilir misiniz? Çok takdir ediyorum.
akış
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.