Google地图自定义数据图层在缩放时无法触发

时间:2018-04-20 17:10:02

标签: javascript google-maps google-maps-api-3 geojson

两部分问题:我编写(修复)的if语句有什么问题,我是否正确使用了setMap(null)?

我有一张地图,我想根据缩放级别显示不同的geoJSON。当我设置以下内容时,我会在缩放时显示更精细的比例,但它只是添加,而不是实际的更改:

   if ($('#map').length) {

  google.maps.event.addListener(map, 'zoom_changed', function() {
    zoomLevel = map.getZoom();
    if (zoomLevel <= 11) {
      window.map.data.loadGeoJson( "toronto_regions.geojson" );

    }
    else {
      window.map.data.loadGeoJson( "districts.geojson" );
    }
  })

现在,我添加了一个else if语句,只是为了稳定事情,直到它变得更复杂。但是,} elseif (zoomLevel <= 9) {{作为意外标识符对象,并将其注释掉,只会将问题传递给else语句。与此同时,我一直在尝试添加一个setMap方法,以便在添加新内容之前清除旧的地图数据。

在清除语法问题时,我现在收到与setMap方法相关的错误InvalidValueError: setMap: not an instance of Map

window.map.mapTypes.set('styled_map', styledMapType);
window.map.setMapTypeId('styled_map');

if ($('#map').length) {
  window.map.data.loadGeoJson( "cities.geojson" );
  google.maps.event.addListener(map, 'zoom_changed', function() {
    zoomLevel = map.getZoom();
    if (zoomLevel < 12 || zoomLevel > 9) {
      window.map.data.setMap('null');
      window.map.setMapTypeId('styled_map');
      window.map.data.loadGeoJson( "cities.geojson" );
    } else if (zoomLevel <= 9) {
       window.map.data.setMap('null');
       window.map.setMapTypeId('styled_map');
       window.map.data.loadGeoJson( "county.geojson" );
    } else if (zoomLevel >= 11) {
       window.map.data.setMap('null');
       window.map.setMapTypeId('styled_map');
       window.map.data.loadGeoJson( "districts.geojson" );
    };
  })

对setMap的任何输入都会非常感激 - 操纵谷歌地图对我来说是一个新领域。

1 个答案:

答案 0 :(得分:1)

您有语法错误:

  • elseif应为else if
  • } else (zoomLevel >= 11) {应为} else if (zoomLevel >= 11) {

我怀疑你想要window.map.data.setMap