我的谷歌地图多边形边界和缩放不起作用

时间:2013-01-27 12:55:13

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

我一直在努力使用绑定我的多边形......当我只有标记时它似乎有效 我是一个完整的地图初学者,所以任何帮助将不胜感激! 我知道我正在预先编写硬编码的长度和纬度,但我不确定如何在以后更新它。我认为我的最后一行代码应该这样做?

function initialize() {
    var projpoints = tempstr.split("|");
    var mapDiv = document.getElementById('map-canvas');
    var map = new google.maps.Map(mapDiv, {
            center: new google.maps.LatLng(-26.6532808494364, 27.8769719868429 ),
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP});
    var bounds = new google.maps.LatLngBounds();
    var pt = [];
    for (var j = 0; j < projpoints.length; j++) {
        pt=[];
        var latlongpoints=projpoints[j].split(",");
        for (var i = 0; i < latlongpoints.length; i++) { 
            var lat = (latlongpoints[i].split(" "));
            var latlng = new google.maps.LatLng(lat[1],lat[0]);
            pt.push(latlng);
            bounds.extend(latlng);
            var shape = new google.maps.Polygon({
                paths: pt,
                strokeColor: '#000000',
                strokeOpacity: 0.8,
                strokeWeight: 2,                    
                fillColor: '#808080',                    
                fillOpacity: 0.35    
            });

            shape.setMap(map);    
        }  

        map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));

    }

1 个答案:

答案 0 :(得分:0)

除了执行bounds.extend之外,您可能还需要在循环结束后执行map.fitBounds(bounds);

您对map.setCenter的调用不正确。此函数只接受一个参数,一个LatLng。你传两个。我假设你想做:

map.setCenter(bounds.getCenter());
map.getBoundsZoomLevel(bounds);

虽然地图对象上没有我知道的getBoundsZoomLevel函数。