Можно ли одновременно использовать атрибуты center и bounds в Leaflet.js?

У меня есть веб-приложение, написанное с использованием Angular.js и директивы angular-leaflet, которое отображает выбор дорог на карте. Я включил несколько закладок для удобной навигации в определенные области и поэтому основывал навигацию по экстенту карты на использовании атрибутов center и zoom.

Теперь я также включаю функцию определения того, видна ли дорога в текущем экстенте карты, используя:
map.getBounds().contains([roadLatA, roadLngA]) || map.getBounds().contains([roadLatB, roadLngB]), где A и B относятся к конечным точкам дороги.

Это отлично работает при загрузке страницы, но после любого взаимодействия (например, событий перетаскивания, масштабирования), когда getBounds() вызывается снова, он возвращает то же LatLng для каждого угла ограничивающей рамки, которые являются значениями, которые установлены как координаты center по умолчанию. . После долгого рефакторинга я не могу найти способ успешно объединить center и getBounds().

Возможно ли это или есть ограничение в директиве angular-leaflet-directive или leaflet.js, что означает, что два метода настройки экстента карты конфликтуют друг с другом?


person Rory    schedule 27.03.2016    source источник
comment
getBounds поведение, которое вы описываете, очень странное. Есть ли шанс, что вы сможете поделиться дополнительным кодом, возможно, воспроизвести вашу проблему в Интернете? (например, на Plunker)   -  person ghybs    schedule 28.03.2016


Ответы (1)


Я решил проблему, проблема заключалась в вызове leafletData.getMap() без передачи id элемента карты.

Это поведение сбивало меня с толку, поскольку первоначальный вызов getMap() (без id) возвращал правильный объект карты, но при последующих вызовах (после взаимодействия с пользователем) $promise не решался, и поэтому я не получал undefined или каких-либо других ошибок. Я предполагаю, что тогда функция getBounds() вызывалась не на том объекте карты.

person Rory    schedule 28.03.2016