首页 > 解决方案 > MapBox - 类似 Uber 的位置选择器

问题描述

我正在尝试使用 MapBox 制作类似 Uber 的位置选择器。缩放时,我想在固定标记(位于地图中心)上“冻结”地图。

默认情况下,无论何时缩放,地图实际上都会缩放到您开始缩放的点击/捏合点,而不是地图中心。我几乎明白了,但现在我正在与居中过渡作斗争(我不想要它)。

有什么诀窍可以实现吗?目前我正在尝试使用 mapbox 事件zoomendmove. 不幸的是zoom引发了太多事件,并且地图像地狱一样滞后:

let markerLocation = map.getCenter();

const marker = new mapboxgl.Marker()
  .setLngLat(markerLocation)
  .addTo(map);

map.on(`zoomend`, (e) => {
  map.flyTo({
    center: markerLocation,
  });
});

map.on(`move`, (e) => {
  if (map.isZooming()) {
    return;
  }
  markerLocation = map.getCenter();
  marker.setLngLat(markerLocation);
});

请找到 JsFiddle:https ://jsfiddle.net/pawelol/kpu8nzh9/2/

任何帮助将不胜感激:)

标签: mapboxmapbox-gl-js

解决方案


推荐阅读