0

我正在使用 Mapbox-gl.js (v0.38.0) Ionic3 & angular4。我想设置动态中心点。经纬度应根据实时数据地点的经纬度数据进行设置。

如果我硬编码设置静态中心点,当我的实时数据发生变化时,它将根据新标记显示中心。所以我想动态设置中心点。

我尝试了以下链接, mapbox 示例 我添加了实时数据和标记。但是如何设置预期的中心点?

实际上我的要求: 例如:如果实时数据在纽约有多个标记,则默认情况下中心点应指向纽约。下次数据可能会更改为加利福尼亚州,届时它应该指向加利福尼亚州。应该根据标记设置我的中心点。

4

2 回答 2

2

以下片段的灵感来自mapbox-gl 上的zoom-to-linestring 示例

正如@Aravind 上面提到的,我们使用map.fitBounds,但是,我们必须确定边界,我们必须减少特征数组以确定 LngLatBounds。

只要确保你加载了特征数据。

例子

let features = [feature, feature]  // ... array of features

// first coordinate in features
let co = features[0].geometry.coordinates;

// we want to determine the bounds for the features data
let bounds = features.reduce((bounds, feature) => {
  return bounds.extend(feature.geometry.coordinates);
}, new mapboxgl.LngLatBounds(co[0].lng, co[0].lat));

// set bounds according to features
map.fitBounds(bounds, {
  padding: 50,
  maxZoom: 14.15,
  duration: 2000
});
于 2017-06-28T09:27:04.033 回答
1

您可以使用内置GeolocateControl查找用户的位置并将地图中心移动到该位置,查看此示例

您可以使用该watchPosition选项来启用对用户位置的跟踪。

MapBox 正在积极努力改进位置跟踪部分。在下一个版本中,您将对此有更好的控制,请查看此链接

于 2017-06-26T06:56:30.260 回答