2016-10-27 2 views
1

Я вставляю многоугольники в карту листов с помощью плагина Leaflet под названием leaflet-omnivore. Синтаксис, который я использую:Листовка: получение границ для многоугольника KML

var polygon = omnivore.kml('placeName.kml'); 
polygon.addTo(map); 

Это прекрасно работает; на моей карте появляется многоугольник. Однако, как только он добавлен, я хочу, чтобы затем увеличить/панорамировать карту, чтобы она соответствовала форме как можно лучше. Я пытался это:

polygon.addTo(map).fitBounds(); 

... но выдает ошибку: 'fitBounds is not a function'. Я также пытался найти координаты с помощью этого:

polygon.addTo(map).getBounds().getNorthEast(); 

... но возвращается с 'cannot read property 'lat' of undefined'.

У кого-нибудь есть идеи? Я в тупике. Документация: here, и я использую Leaflet 1.0.0.

ответ

1

Вы должны подождать, пока загрузится .kml. Так что ваши вещи после того, как 'ready' событие уволят, говорится в документации HERE:

var polygon = omnivore.kml('yourKML.kml'); 
polygon.addTo(map); 

polygon.on('ready', function() { 
    map.fitBounds(polygon.getBounds()) 
}); 
+0

Я знал, что это будет что-то я упускать из виду! Большое вам спасибо за вашу помощь. Есть ли что-нибудь в частности, которое подсказывало вам, что это вопрос времени? Может быть, «неопределенная» часть? @Manuel – Rich

+0

Да, я видел это на консоли, что метод .getBounds() вызывается до того, как .kml загружен – Manuel