网站中Google Map缩放级别设置不生效(JavaScript)
解决Google Maps设置Zoom不生效的问题
我帮你排查了代码,问题出在KmlLayer的默认行为上:当你加载KMZ文件时,Google Maps的KmlLayer组件会自动调整地图的视野(包括缩放级别和中心位置),让整个KMZ内容完整显示在地图上,这就覆盖了你手动设置的zoom: 15参数。
解决方法
在创建KmlLayer的时候,添加preserveViewport: true选项,这个参数会告诉地图保留你初始设置的中心和缩放级别,不要自动适配KMZ内容范围。
修改后的JavaScript代码如下:
function initMap() { // 把map变量提升为全局变量,解决后面回调里找不到map的问题 window.map = new google.maps.Map(document.getElementById('map'), { zoom: 15, center: {lat: 52.132633, lng: 5.291266} }); var georssLayer = new google.maps.KmlLayer({ url: 'https://www.tso-assistent.nl/js/TSO-ASSISTENT.kmz', preserveViewport: true // 新增这个选项 }); georssLayer.setMap(map); } window.eqfeed_callback = function(results) { // 现在能访问全局的map变量了 for (var i = 0; i < results.features.length; i++) { var coords = results.features[i].geometry.coordinates; var latLng = new google.maps.LatLng(coords[1],coords[0]); var marker = new google.maps.Marker({ position: latLng, map: window.map }); } }
额外说明
我还发现一个小问题:你原来的eqfeed_callback函数里直接引用map变量会报错,因为initMap里的map是局部变量,外部函数访问不到。上面的代码把map挂载到window对象上,变成全局变量,就能解决这个问题了。
内容的提问来源于stack exchange,提问作者Coen
相关产品推荐
相关产品推荐

