在可视化地址时,无法调用未定义的方法'getSouthWest'

时间:2012-03-08 09:32:32

标签: google-maps geocoding

我正在尝试显示用户在网络表单中输入的地址的标记。问题是我收到以下错误

  

无法调用未定义的方法'getSouthWest'

当我尝试使用以下代码显示标记时:

    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();

                //Remove all markers from the map
            clearMarkers();

                //Display the new marker on the map
            showFullAddressesOnMap(latitude, longitude, address);

            //Center the map according to the marker
            map.fitBounds(results[0].geometry.bounds);                      
        }
    });

function showFullAddressesOnMap(latitude, longitude, fullAddress) {
    displayMarker(-1, "", "", "", fullAddress, true, latitude, longitude);
}

function displayMarker(appID, title, image, imageType, address, markerType, lat, lng) {

    var listingLatLng = new google.maps.LatLng(lat, lng);
    var marker = new google.maps.Marker({
        position: listingLatLng,
        map: map,
        icon: markerType ? imgBluePin : imgGreenPin,
        title: title + address
    });

    var content = GetContent(appID, title, image, imageType, address);

    marker.info = new google.maps.InfoWindow({
        content: content,
        size: new google.maps.Size(50, 50)
    });

    google.maps.event.addListener(marker, 'click', function () {
        closeAllWindows();
        marker.info.open(map, marker);
    }); 

    bounds.extend(listingLatLng);
    map.fitBounds(bounds);

    markers.push(marker);
}

此外,每次都不会发生错误。这是一个崩溃代码的地址。

  

France,Ile-de-France,Paris,75006,Paris,7 rue casimir delavigne

我认为在调用FitBounds时会导致错误。发生错误时,地理编码返回的边界将缩小为省级别。

错误的原因是什么?当用户输入带有街道名称的地址时,我需要将地图缩放到街道级别。

1 个答案:

答案 0 :(得分:4)

界限未在某处定义。

您必须在displayMarker可以访问的范围内定义它,然后才能使用它的方法或将其用作方法的参数:

bounds=new google.maps.LatLngBounds();