0

我已经使用 geoxml3 加载并设置了样式。现在我想更新地图只改变中心点和缩放级别。我怎么能做到这一点。

var latlng = new google.maps.LatLng(29.722601, -11.681680); 
    var myOptions = {
            zoom : 1,
            //minZoom:2,
            maxZoom:10,
            center : latlng,
            //disableDefaultUI: true,
            streetViewControl: false,
            mapTypeControl: false,
            panControl: true,
            zoomControl: true,
            suppressInfoWindows : true,
            preserveViewport : true,
            scrollwheel: false,
            styles:style
        };

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var geoXml = new geoXML3.parser({
        map: map,
        singleInfoWindow: false,
        afterParse: useTheData,
        suppressInfoWindows : true,
        zoom : false
    });
    geoXml.parse(url_kml+'basins.kml');

加载上述内容后,我想使用 onclick 应用 chnages。我的 onclick 运行以下js功能

function updatekmmap(region){
    console.log(region);
    console.log(map);
    var latlng = new google.maps.LatLng(29.722601, -11.681680);
    //
    switch(region){
    case "north":
        latlng = new google.maps.LatLng(56.065192, -104.814452); 
        break;
    }
    gMap = new google.maps.Map(document.getElementById('map_canvas')); 
    gMap.setZoom(10);      // This will trigger a zoom_changed on the map
    gMap.setCenter(latlng);

}

这不保留原来的风格等。

4

1 回答 1

0

我现在可以工作了。我正在重新创建地图对象。

function updatekmmap(region){
    console.log(region);
    console.log(map);
    var latlng = new google.maps.LatLng(29.722601, -11.681680);
    //
    switch(region){
        case "north":
            latlng = new google.maps.LatLng(31.137854, -90.256931); 
            break;
        case "south":
            latlng = new google.maps.LatLng(31.137854, -90.256931); 
            break;
        case "caribbean":
            latlng = new google.maps.LatLng(31.137854, -90.256931); 
            break;
        case "eu":
            latlng = new google.maps.LatLng(50.352658, -9.316490); 
            break;
        case "med":
            latlng = new google.maps.LatLng(37.309248, 18.786537); 
            break;
        case "africa":
            latlng = new google.maps.LatLng(-14.933886, -59.495213); 
            break;
        case "asia":
            latlng = new google.maps.LatLng(31.137854, -90.256931); 
            break;
    }
    //gMap = new google.maps.Map(document.getElementById('map_canvas')); 
    map.setZoom(3);      // This will trigger a zoom_changed on the map
    map.setCenter(latlng);
    //console.log( geoXml.getDefaultBounds());
    //return false;
}
于 2015-02-06T13:45:43.840 回答