Leaflet: Documentação de como preencher o conteúdo pop-up por meio de ajax

Criado em 27 ago. 2012  ·  10Comentários  ·  Fonte: Leaflet/Leaflet

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!

Comentários muito úteis

Isso foi bem referenciado no google, então aqui está para quem procura:

  • Você não precisa criar manualmente um pop-up e chamar map.openPopup; se você tiver um marcador, poderá usar bindPopup () e getPopup () se desejar.
  • não se esqueça de chamar popup.update () http://leafletjs.com/reference.html#popup -update

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

Todos 10 comentários

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:

  • Você não precisa criar manualmente um pop-up e chamar map.openPopup; se você tiver um marcador, poderá usar bindPopup () e getPopup () se desejar.
  • não se esqueça de chamar popup.update () http://leafletjs.com/reference.html#popup -update

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?

@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 = '

'+ ponto de dados [i] .intensidade +'

';
});
 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.

Esta página foi útil?
0 / 5 - 0 avaliações