Я думаю, это возможно. Я вижу этот пример на домашней странице Leaflet:
// 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();
Таким образом, вы можете добавить разметку как контент. Смотрите тег br выше.
// 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 openedvar mydiv = document.getElementsByClassName('popup_custom_div')[0];
mydiv.innerHTML ='I am here';
Ответ @cavila - это только часть решения. Вы можете поместить тег div для диаграммы во всплывающем окне, но проблема возникает тогда, потому что вам нужно будет прослушать событие ".openPopup ()", чтобы затем выполнить javascript raphy-carts. Если вы не сделаете это для этого события, то при его выполнении он не найдет тег div, поскольку он не был вставлен в DOM. Похоже, листовка поддерживает прослушивание событий, поэтому вам нужно добавить что-то вроде этого в код выше:
map.on('popup',function(e){//Run the chart code here like thisvar chart =newCharts.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();});
Таким образом, openPopup () является асинхронным? Потому что интерпретатор Javascript не будет выполнять следующий оператор до предыдущего возврата, за исключением обратных вызовов, которые выполняются позже. Альтернатива, если никакое событие не будет выполнением пула для существования этого "div" в цикле window.setTimeout. Обратный вызов события будет намного быстрее.
кавила
1
Одним из способов будет прослушивание событий кликов на ваших создателях и создание диаграмм на лету. Вот пример: http://jsfiddle.net/6UJQ4/
Одна вещь, которая мне не была понятна, пока я не начал играться, это то, что bindPopup Leaflet может принимать строку или DOM-узел. Приведенный выше пример создает DOM-узел, передает его в bindPopup, а затем создает диаграмму.
Это возможно для событий многоугольника? При нажатии на какой-либо полигон появляется похожее всплывающее окно?
против потока
Да, должно быть возможно. Мой пример жестко запрограммирован на использование 50 в качестве значения для диаграммы, но вы можете делать все что угодно внутри функции, которая создает диаграмму.
Дерек Суингли
Можете ли вы написать пример с полигонами или данными геойсон на jsfiddle, как это с маркерами? Я был бы очень признателен.
Одним из способов будет прослушивание событий кликов на ваших создателях и создание диаграмм на лету. Вот пример: http://jsfiddle.net/6UJQ4/
Одна вещь, которая мне не была понятна, пока я не начал играться, это то, что bindPopup Leaflet может принимать строку или DOM-узел. Приведенный выше пример создает DOM-узел, передает его в bindPopup, а затем создает диаграмму.
источник