初始化地图时,我会在地图上添加1个标记。当我缩小地图时,我可以在地图'副本'上多次看到添加的标记。
当我在地图中搜索位置时,它会添加一个新标记。 之后我使用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);
答案 0 :(得分:2)
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);