Невозможно вызвать метод getSouthWest из неопределенного при визуализации адреса - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь отобразить маркер для адреса, который пользователь вводит в веб-форме. Проблема в том, что я получаю следующую ошибку

Невозможно вызвать метод '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);
}

Кроме того, ошибка не возникает каждый раз. Вот адрес, который дает сбой кода.

Франция, Иль-де-Франс, Париж, 75006, Париж, 7 rue casimir delavigne

Я думаю, что ошибка вызвана, когда вызывается FitBounds. При возникновении ошибки границы, возвращаемые геокодированием, уменьшаются до уровня провинции.

В чем причина ошибки? Мне нужно увеличить карту до уровня улицы, когда пользователь вводит адрес с названием улицы.

1 Ответ

4 голосов
/ 08 марта 2012

границы где-то не определены.

Вы должны определить его в области, в которой он доступен displayMarker, прежде чем использовать его методы или использовать его в качестве аргумента для методов:

bounds=new google.maps.LatLngBounds();
...