2012-03-08 3 views
1

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

Невозможно вызвать метод «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 Казимир Делавинь

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

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

ответ

4

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

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

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

но почему не делает геокод возврата границ. Более того, почему это происходит время от времени? – Thea

+0

Вы не можете доверять границам, возвращаемым геокодированием, они будут возвращены «если применимо», как вы можете прочитать в документах. Адрес, который вы использовали, вернет точную точку, номер улицы, поэтому нет области, которая может иметь какие-либо границы. –

+0

Да, геокодирование возвращает «undefined» для границ. Это происходит, когда я добавляю название улицы и номер, но если я просто напечатаю «Франция, Париж, 75006», все в порядке. Почему он не может найти границы, хотя находит полный адрес даже с именем улицы и номером? – Thea

Смежные вопросы