我使用API V3嵌入了Google地图,但我无法将其默认缩放到除1以外的任何其他内容。
我的头脑中的JS是:
var map1;
var src1 = 'https://latitude.google.com/latitude/apps/badge/api?user=8963899225283336226&type=kml';
function initialize1() {
map1 = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 7,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
loadKmlLayer1(src1, map1);
}
google.maps.event.addDomListener(window, 'load', initialize1);
function loadKmlLayer1(src1, map1) {
var kmlLayer1 = new google.maps.KmlLayer(src1, {
suppressInfoWindows: false,
clickable: true,
preserveViewport: false,
map: map1
});
}
HTML只是map-canvas div,没有别的。看一下这里的一些线程,看起来它与检测视口和重置边界有关。
我找到了一个建议添加如下内容的帖子:
google.maps.event.addListener(kmlLayer1, 'defaultviewport_changed', function() {
var bounds = kmlLayer1.getDefaultViewport();
map.setCenter(bounds.getCenter());
})
但它没有任何区别。我绝不是一名JS专家,虽然我大部分时间都在理解上面大部分代码中发生了什么,但我还是不够先进,即兴创作甚至不知道应该放在哪里。
答案 0 :(得分:2)
谢谢Molle。
我增强了这个并且它有效:
google.maps.event.addListener(kmlLayer, 'status_changed', function () {
console.log('kml loaded:');
google.maps.event.addListenerOnce(map, 'zoom_changed', function () {
console.log('zoom_changed:');
map.setZoom(7);
map.setCenter(new google.maps.LatLng(0, 0));
});
});
答案 1 :(得分:1)
API会将视口设置为包含所有KML功能,这些功能将覆盖缩放设置。
缩放更改后重置缩放(与加载KML图层时一样)
google.maps.event.addListenerOnce(map1, 'zoom_changed', function() {
this.setZoom(7);
})