gpt4 book ai didi

javascript - fitBounds 未正确居中

转载 作者:行者123 更新时间:2023-12-02 17:32:19 24 4
gpt4 key购买 nike

当我初始化 map 时,我向 map 添加 1 个标记。当我缩小 map 时,我可以在 map “副本”上多次看到添加的标记。 zoomed out map with multiple markers visible

当我搜索某个位置时, map 会添加一个新标记。之后,我使用 fitBounds 来适应 map 上的两个标记。

通常这会导致以下结果: Normally functioning fitBounds

但是有时它会这样做: Incorrect centering of fitBounds

我感觉 fitBounds 方法有时使用“另一个世界”上的标记。两个标记的纬度和经度都是正确的,正如您所看到的,现在左侧有 2 个标记。

有人可以向我解释为什么会发生这种情况以及如何避免/解决它吗?

这是搜索提交函数的一部分,我在其中计算边界:

var searchResultLocation = mapSearchPlaces[0].geometry.location;

//Create search marker
marker = new google.maps.Marker({
position: searchResultLocation,
animation: google.maps.Animation.BOUNCE,
map: map
});
searchMarkers.push(marker);

//Find map bounds
var closestMarker = null;
var closest = Number.MAX_VALUE;
for (var i=0; i < markerLocations.length; i++) {
var distance = google.maps.geometry.spherical.computeDistanceBetween(searchResultLocation, markerLocations[i]);
if (distance < closest) {
closest = distance;
closestMarker = markerLocations[i];
}
}
var bounds = new google.maps.LatLngBounds(searchResultLocation, closestMarker);
map.fitBounds(bounds);

最佳答案

google.maps.LatLngBounds构造函数采用两个非常具体的参数,按特定的顺序:

  LatLngBounds(sw?:LatLng, ne?:LatLng) | Constructs a rectangle from the points at its south-west and north-east corners.

您应该创建一个空的 LatLngBounds 对象并使用两个点扩展它:

var bounds = new google.maps.LatLngBounds();
bounds.extend(searchResultLocation);
bounds.extend(closestMarker);
map.fitBounds(bounds);

关于javascript - fitBounds 未正确居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com