2015-12-18 7 views
0

Я следую примерам markercluster из библиотеки Mapbox, но не могу решить свою проблему. Если вы, ребята, посмотрите на мой рабочий пример here, вы заметите эту строку кода:Markercluster in Mapbox

L.mapbox.featureLayer(markerLayer).on('ready', function(e) { 

Что я Initally считал я мог бы поставить маркеры внутри markercluster featureLayer, но я предполагаю, что это был неправильный подход. Любые решения? Благодарю.

Пример Следующий here

ответ

2

MapBox пример вы ссылаетесь делает вызов AJAX для извлечения данных GeoJSON, следовательно, она должна Закрепление на «готов» слушателя.

В вашем случае данные GeoJSON определены в ваших сценариях, поэтому событие «ready» не будет запущено (кроме того, вы должны использовать L.mapbox.featureLayer с вашим объектом GeoJSON напрямую, а не с помощью слоя функций).

Вы можете просто использовать eachLayer method для итерации всех созданных маркеров в пределах слоя функций и добавления их в свою группу кластеров маркеров.

var clusterGroup = new L.MarkerClusterGroup(); 

var markerLayer = L.mapbox.featureLayer(markers).eachLayer(function(layer) { 
    clusterGroup.addLayer(layer); 
}); 

map.addLayer(clusterGroup); 

Обновлен Plunker: http://plnkr.co/edit/fN6xYcn1Lg532eLe39IS?p=preview

+0

Спасибо так много, так много узнал –

+0

Эй, я пытаюсь использовать 'L.MarkerClusterGroup()' с последним MapBox (v3.0.1), который поставляется с Leaflet v1.0.2, но я получаю сообщение об ошибке 'Uncaught TypeError: L.MarkerClusterGroup не является конструктором'. Вы можете помочь? – Andrew

+0

@ Andrew Я вижу, что вы открыли новый вопрос для своей проблемы. Это действительно правильный способ запросить помощь по другой проблеме. – ghybs