Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件侦听器中的数据层没有响应(Google Maps API)_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 事件侦听器中的数据层没有响应(Google Maps API)

Javascript 事件侦听器中的数据层没有响应(Google Maps API),javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一个函数,将geoJSON加载到地图中,然后在达到特定缩放级别时替换它。当window.map.data.setMap(null)为被注释掉,但仅在缩放级别更改时堆积在所有贴图上。取消注释setMap(null)行会在缩放级别更改时删除贴图,但不允许新文件替换它;在将数据层绑定到变量时,我始终没有定义(请参见末尾的图片): 这是我当前设置断点时得到的结果: 我缺少的联系是什么?文档()表明loadGeoJSON和zoomchange是不兼容的方法,这似乎不太可能。在我看来,您要做的是为每个

我有一个函数,将geoJSON加载到地图中,然后在达到特定缩放级别时替换它。当
window.map.data.setMap(null)为被注释掉,但仅在缩放级别更改时堆积在所有贴图上。取消注释
setMap(null)
行会在缩放级别更改时删除贴图,但不允许新文件替换它;在将数据层绑定到变量时,我始终没有定义(请参见末尾的图片):

这是我当前设置断点时得到的结果:


我缺少的联系是什么?文档()表明loadGeoJSON和zoomchange是不兼容的方法,这似乎不太可能。

在我看来,您要做的是为每个数据集创建一个
数据层。然后根据缩放级别对其进行管理。当它们第一次可见时创建它们,当它们隐藏时将其map属性设置为null,当希望它们可见时将其设置为map变量

var districtLayer, cityLayer, countyLayer;
window.map.addListener('zoom_changed', function() {
  var zoomLevel = map.getZoom();
  if (zoomLevel < 12 && zoomLevel > 9) {
    // city level, hide district and county layers
    if (districtLayer && districtLayer.setMap)
      districtLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (!cityLayer) {
      cityLayer = new google.maps.Data();
      cityLayer.addGeoJson(cities);
    }
    cityLayer.setMap(map);
  } else if (zoomLevel <= 9) {
    // county level, hide city and county layers
    if (cityLayer && cityLayer.setMap)
      cityLayer.setMap(null);
    if (districtLayer && districtLayer.setMap)
      districtLayer.setMap(null);
    if (!countyLayer) {
      countyLayer = new google.maps.Data();
      countyLayer.addGeoJson(county);
    }
    countyLayer.setMap(map);
  } else if (zoomLevel >= 12) {
    // city level, hide district and county layers
    if (cityLayer && cityLayer.setMap)
      cityLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (!districtLayer) {
      districtLayer = new google.maps.Data();
      districtLayer.addGeoJson(district);
    }
    districtLayer.setMap(map);
  }
});

哦,哇,太好了!所以我会将geojson作为变量加载进来,然后根据需要调用它们。非常感谢。
// load data - do the same for data2, data3 or whatever
data1 = new google.maps.Data();
data1.loadGeoJson(url1);

// create some layer control logic for turning on data1
data1.setMap(map) // or restyle or whatever

// turn off data1 and turn on data2
data1.setMap(null) // hides it
data2.setMap(map) // displays data2
var districtLayer, cityLayer, countyLayer;
window.map.addListener('zoom_changed', function() {
  var zoomLevel = map.getZoom();
  if (zoomLevel < 12 && zoomLevel > 9) {
    // city level, hide district and county layers
    if (districtLayer && districtLayer.setMap)
      districtLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (!cityLayer) {
      cityLayer = new google.maps.Data();
      cityLayer.addGeoJson(cities);
    }
    cityLayer.setMap(map);
  } else if (zoomLevel <= 9) {
    // county level, hide city and county layers
    if (cityLayer && cityLayer.setMap)
      cityLayer.setMap(null);
    if (districtLayer && districtLayer.setMap)
      districtLayer.setMap(null);
    if (!countyLayer) {
      countyLayer = new google.maps.Data();
      countyLayer.addGeoJson(county);
    }
    countyLayer.setMap(map);
  } else if (zoomLevel >= 12) {
    // city level, hide district and county layers
    if (cityLayer && cityLayer.setMap)
      cityLayer.setMap(null);
    if (countyLayer && countyLayer.setMap)
      countyLayer.setMap(null);
    if (!districtLayer) {
      districtLayer = new google.maps.Data();
      districtLayer.addGeoJson(district);
    }
    districtLayer.setMap(map);
  }
});