两部分问题:我编写(修复)的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的任何输入都会非常感激 - 操纵谷歌地图对我来说是一个新领域。
答案 0 :(得分:1)
您有语法错误:
elseif
应为else if
} else (zoomLevel >= 11) {
应为} else if (zoomLevel >= 11) {
我怀疑你想要window.map.data.setMap