Está documentado em algum lugar como preencher o conteúdo de um pop-up de marcador ao clicar nele?
Além disso, é possível preencher o conteúdo do pop-up para todos os marcadores visíveis? Estou usando o Leaflet.markercluster e seria bom carregar o conteúdo pop-up apenas quando estou ampliado o suficiente para ver os marcadores individuais.
Não sou muito bom com js e minhas pesquisas não deram em nada, mas sinto que o que estou tentando fazer é possível ...?
Obrigado novamente!
Se você criar um pop-up explicitamente, poderá definir o conteúdo:
var popup = new L.Popup();
popup.setLatLng(latlng);
popup.setContent('seme content');
map.openPopup(popup);
http://leaflet.cloudmade.com/reference.html#popup
Portanto, ouça o evento 'click' em seus marcadores (você pode definir isso no MarkerClusterGroup). Então, quando ele é disparado, você cria um pop-up com uma mensagem de carregamento, carrega o conteúdo por meio de ajax e, em seguida, coloca o conteúdo dentro dele quando ele voltar.
var group = new L.MarkerClusterGroup();
group.on('click', showMarker);
function showMarker(marker) {
//use marker.layer for the marker IIRC
//Create popup here and fetch content
}
Espero que ajude!
Obrigado, vou estudar isso e implementar!
Isso foi bem referenciado no google, então aqui está para quem procura:
Aqui está um exemplo prático com o folheto 0.7.3:
var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup("Loading...")
marker.on('click', function(e) {
var popup = e.target.getPopup();
var url="DYNAMIC_CONTENT_URL";
$.get(url).done(function(data) {
popup.setContent(data);
popup.update();
});
Observe que você também pode passar uma função para bindPopup()
. Ele será chamado quando o pop-up for aberto e deve retornar String
ou HTMLElement
. Portanto, outra versão do seu código (que não determina qual tipo de evento faz com que o pop-up seja aberto):
var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup(function() {
var el = $('<div/>');
$.get("DYNAMIC_CONTENT_URL").done(function(data) {
el.setContent(data);
popup.update();
});
return el;
});
Alguém tem um exemplo prático disso que estaria disposto a compartilhar?
Aqui está um plunkr-
@chriszrc que me salvou de muitos problemas. obrigado cara
@chriszrc Não
Nenhum pop-up aparece.
Os dados de amostra são assim:
{"datapoint":[{"intensity":92,"latitud":"18.52","longitud":"82.4767"},{"intensity":68,"latitud":"17.7375","longitud":"82.8347"}]}
Estou tentando exibir a intensidade no pop-up.
Isso é o que eu tentei:
`` `
marcador.bindPopup ((pop-up) => {
var el = document.createElement ('div');
el.classList.add ("minha-classe");
$ .getJSON (" http://www.example.com/data ", function (datapoint) {
el.innerHTML = '
return el;
@kunaldhariwal você precisará postar um plunkr ou algo assim, impossível dizer sem um exemplo. Para começar, porém, o url que você está carregando o snippet de código ("http://www.example.com/data") não parece retornar um json- válido
@chriszrc Este é um exemplo de URL. Por algumas razões óbvias, não consigo revelar o url exato.
Sinto muito, mas vou tentar descobrir algo.
Comentários muito úteis
Isso foi bem referenciado no google, então aqui está para quem procura:
Aqui está um exemplo prático com o folheto 0.7.3: