#mapbox-gl-js
#mapbox-gl-js
Вопрос:
У меня есть карта веб-приложения Mapbox, к которой я хочу добавить местоположение пользователя, но карта НЕ будет автоматически повторно центрироваться на местоположении пользователя. Пример кода здесь https://docs.mapbox.com/mapbox-gl-js/example/locate-user / отлично работает, я просто не хочу, чтобы карта повторно центрировалась на пользователе.
Это именно тот код, который я использую:
// GEO LOCATE USER!
const geolocate = new mapboxgl.GeolocateControl({
positionOptions: {
enableHighAccuracy: false
},
trackUserLocation: false
});
map.addControl(geolocate,"bottom-left");
geolocate.trigger();
Есть ли способ сделать geolocate.trigger() пассивным и не повторно центрировать карту, просто добавить к ней местоположение пользователя?
Комментарии:
1. Вы пытались передать
fitBoundsOptions
параметр? docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol
Ответ №1:
Mapbox-GL не предоставляет официальный API для отключения автоматического отслеживания местоположения пользователя с помощью камеры, но вы можете исправить его, чтобы выполнить то, что вы хотите:
const locate = new mapboxgl.GeolocateControl({
positionOptions: { enableHighAccuracy: true },
trackUserLocation: true
})
// hacky workaround for the fact that mapbox doesn't let you disable camera auto-tracking
locate._updateCamera = () => {}
this.map.addControl(locate)
Это работает путем замены внутреннего _updateCamera
метода на noop:
— https://github.com/mapbox/mapbox-gl-js/blob/2693518e8d042b3120c33f08433abbc3b114d25c/src/ui/control/geolocate_control.js#L187