以下代码在地图上显示教堂和牧师:
var churchLatLng = new google.maps.LatLng(53.4, 0.14);
var mapOptions = {
center: churchLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
myMap = new google.maps.Map(document.getElementById('myDiv'), mapOptions);
var bounds = new google.maps.LatLngBounds();
// Setting church marker
new google.maps.Marker({
position: churchLatLng,
map: myMap,
});
bounds.extend(churchLatLng);
var priestLatLng = new google.maps.LatLng(51.2,0.13);
new google.maps.Marker({
position: priestLatLng,
map: myMap
});
bounds.extend(priestLatLng);
myMap.fitBounds(bounds);
代码使用选项“center”将教堂置于地图中心,使用“fitBounds”功能以适应所有标记(仅在此情况下为教堂和牧师)。
结果是地图边框设置为包含两个标记,但选项“center”不再起作用并被忽略。
我想要的是设定界限,但同时将教堂展示在地图的中心。
我该如何做到这一点?
答案 0 :(得分:4)
如果地图边界未包含牧师标记,则缩小一级(map.setZoom(map.getZoom() - 1))。
myMap.fitBounds(bounds);
google.maps.event.addListenerOnce(myMap,'bounds_changed',function() {
google.maps.event.addListenerOnce(myMap, 'center_changed', function() {
if (!myMap.getBounds().contains(priestLatLng)) {
myMap.setZoom(myMap.getZoom()-1);
}
});
myMap.setCenter(churchLatLng);
});
答案 1 :(得分:0)
尝试使用eventlistener并等待边界发生变化(它可以异步) 类似的东西:
google.maps.event.addListenerOnce(myMap, 'bounds_changed', function(event) {
myMap.setCenter(churchLatLng);
});