如何在 Mapboxgl 中设置动态中心点?
How can I set dynamic center point in Mapboxgl?
我正在使用 Mapbox-gl.js (v0.38.0) Ionic3 和 angular4。我想设置动态中心点。经纬度要根据实时数据地点的经纬度数据设置。
如果我硬编码设置静态中心点,当我的实时数据发生变化时,它将根据新标记显示中心。所以我想动态设置中心点。
我尝试了以下 link,
mapbox example
我添加了实时数据和标记。但是如何设置预期的中心点呢?
其实我的要求是:
例如:如果实时数据在纽约有多个标记,则默认中心点应指向纽约。下一次数据可能会更改为 Callifornia,此时它应该指向 California。
根据标记,我的中心点应该被设置。
您可以使用内置的 GeolocateControl
来查找用户的位置并将地图的中心移动到该位置,查看此 example。
您可以使用 watchPosition
选项来启用对用户位置的跟踪。
MapBox 正在积极改进位置跟踪部分。在下一个版本中,您将更好地控制它,Check out this link。
以下代码段的灵感来自 mapbox-gl
上的 zoom-to-linestring
example
正如@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
});
我正在使用 Mapbox-gl.js (v0.38.0) Ionic3 和 angular4。我想设置动态中心点。经纬度要根据实时数据地点的经纬度数据设置。
如果我硬编码设置静态中心点,当我的实时数据发生变化时,它将根据新标记显示中心。所以我想动态设置中心点。
我尝试了以下 link, mapbox example 我添加了实时数据和标记。但是如何设置预期的中心点呢?
其实我的要求是: 例如:如果实时数据在纽约有多个标记,则默认中心点应指向纽约。下一次数据可能会更改为 Callifornia,此时它应该指向 California。 根据标记,我的中心点应该被设置。
您可以使用内置的 GeolocateControl
来查找用户的位置并将地图的中心移动到该位置,查看此 example。
您可以使用 watchPosition
选项来启用对用户位置的跟踪。
MapBox 正在积极改进位置跟踪部分。在下一个版本中,您将更好地控制它,Check out this link。
以下代码段的灵感来自 mapbox-gl
上的zoom-to-linestring
example
正如@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
});