2016-03-22 4 views
0

У меня есть панель поиска на моей карте листовка, и я хотел бы, чтобы карта медленно увеличивала и панорамировала маркер при выборе из панели поиска. Я могу заставить его масштабировать и панорамировать, но не медленно. Мой желаемый эффект будет аналогичен тому, когда вы введете местоположение в Google Планета Земля и увидите «мухи» из одного места в другое. Это код, который у меня есть, который меняет масштаб до моего местоположения, но не медленно.Анимированные setView() в Листовке

controlSearch = new L.Control.Search({layer:listOfMarkers, propertyName: 'IntersectionName', circleLocation:true, position:'topleft'}); 
    map.addControl(controlSearch) 

controlSearch.on('search_locationfound', function(e){ 
    map.setView(e.latlng,15, {animate:true, duration:10.0}) 
}); 

Я использую листовки v0.7.7.

Спасибо!

ответ

4

К сожалению, не существует способа изменить продолжительность любого setView, который изменяет текущий уровень масштабирования в Листовке 0.7.7 *. Продолжительность любого анимированного увеличения жестко запрограммирована как 0,25 с, а потому, что setView принимает zoom/pan options, которые не включают duration, ваш duration:10.0 будет проигнорирован.

Однако setView делает принимать отдельные опции для панорамирования и масштабирования, а также потому, что pan options действительно включает продолжительность, вы можете панорамировать плавно на текущем уровне масштабирования используя следующее:

map.setView(e.latlng, map.getZoom(), { 
    "animate": true, 
    "pan": { 
    "duration": 10 
    } 
}); 

Я понимаю, что это не совсем то, что вы ищете, но это на один шаг ближе.

* В Leaflet 1.0b есть flyTo method, который производит эффект, который вы описываете, но в 0.7.7 ничего подобного.

Смежные вопросы