You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:43:20