Как НЕ менять центр камеры при запуске GeolocateControl?

У меня есть карта веб-приложения 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() был пассивным опытом и не центрировал карту, а просто добавил к ней местоположение пользователя?


person littlered    schedule 19.04.2019    source источник
comment
Вы пытались передать параметр fitBoundsOptions? docs.mapbox.com/mapbox-gl-js/api/#geolocatecontrol< /а>   -  person BDD    schedule 20.04.2019


Ответы (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

person hunterloftis    schedule 16.09.2019