2014-06-13 2 views
1

Я пытаюсь отобразить всплывающую подсказку каждого маркера карты без необходимости наведения или щелчка, чтобы открыть ее. Вот моя попытка цепи функция openPopup к bindPopup:mapbox display multiple tooltips onload

function onEachFeature(feature, layer) { 
     if (feature.properties && feature.properties.popupContent) { 
      popupContent = feature.properties.popupContent; 
     } 
     layer.bindPopup(popupContent).openPopup(); 
    } 

Но всплывающие подсказки не появляются, если не нажата.

fiddle

Я вижу, что this page документации предлагает следующие функции, но это только для одного маркеров, а не несколько из них.

marker.eachLayer(function(m) { 
    m.openPopup(); 
}); 

Как показать все маркеры при загрузке?

ответ

1

К сожалению, это то, как всплывающие окна работают в листовке.

Существует небольшой хак предусмотрено в https://stackoverflow.com/a/16707921/128165

/*** little hack starts here ***/ 
L.Map = L.Map.extend({ 
    openPopup: function (popup) { 
     //  this.closePopup(); // just comment this 
     this._popup = popup; 

     return this.addLayer(popup).fire('popupopen', { 
      popup: this._popup 
     }); 
    } 
}); /*** end of hack ***/ 

После того, как вы добавите, что ваш код вы можете использовать

for (var o in overlays){ 
    overlays[o].eachLayer(function (m) { 
     m.eachLayer(function(l){l.openPopup();}); 
    }); 
} 

перебрать все маркеры в вашем случае и вызвать их метод openPopup

Демо наhttp://jsfiddle.net/46f2r/6/

+0

красивый, спасибо – nathanbweb