2014-02-11 3 views
0

Я взял код, который я написал некоторое время назад для другого веб-приложения, и использовал его для другого. Однако, без всякой видимой причины, это не извлечение результатов:Геокодирование Google Maps и ZERO_RESULTS

Geocode не удалось по следующей причине: ZERO_RESULTS

Я следующий код, который - как это подразумевается - работает без проблем в других местах:

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 
<script type="text/javascript"> 
    function googleMaps (lat, lng, zoom) { 
     geocoder = new google.maps.Geocoder(); 
     var myLatlng = new google.maps.LatLng(lat, lng); 
     var myOptions = { 
      zoom: zoom, 
      center: myLatlng, 
      mapTypeId: google.maps.MapTypeId.TERRAIN 
     } 
     map = new google.maps.Map(document.getElementById("map-locations"), myOptions); 
     var marker = new google.maps.Marker({ 
      position: myLatlng, 
      map: map 
     }); 
     google.maps.event.addListener(map, "center_changed", function(){ 
      document.getElementById("latitude").value = map.getCenter().lat(); 
      document.getElementById("longitude").value = map.getCenter().lng(); 
      marker.setPosition(map.getCenter()); 
      document.getElementById("zoom").value = map.getZoom(); 
     }); 
     google.maps.event.addListener(map, "zoom_changed", function(){ 
      document.getElementById("zoom").value = map.getZoom(); 
     }); 
    } 
    $(document).ready(function() { 
     googleMaps(52.3555, -1.1743, 6); 
    }); 
</script> 
<script> 
    $(document).ready(function(){ 
     $("#address").change(function(){ 
      geocoder.geocode({ 
       "address": $(this).attr("value") 
      }, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        map.setZoom(14); 
        map.setCenter(results[0].geometry.location); 
       } else { 
        alert("Geocode was not successful for the following reason: " + status); 
       } 
      }); 
     }); 
    }) 
</script> 

у меня также есть «холст» и соответствующее поле адреса, которые являются идентичными для функционирования версии в другом месте.

Как в стороне, я прошел процедуру API Google для создания ключа API, который, как мне кажется, не был связан с более ранней версией. Но с ключом API или без него он не будет работать.

Так что мне интересно, как этот процесс каким-то образом сломал вещи.

+0

Какое значение '$ (это) .attr ("значение")' когда она возвращает ZERO_RESULTS? Действительно ли это почтовый адрес? – geocodezip

+0

Любой адрес или почтовый индекс Я попытался получить результаты с другим веб-приложением (т. Е. Каждый запрос, который я пробовал) не удалось с указанным выше кодом. –

+0

Удаленный предыдущий ответ, поскольку это не имело смысла (я не понял, что геокодер не был вызван в результате этих коордов, должен научиться читать). Попробуйте оповестить $ (this) .attr («значение»), как указано выше, и проверить, что адрес/координаты фактически передаются на вызов в действующем порядке. – Swires

ответ

4

Вы должны изменить свой код

... 
geocoder.geocode({ 
       "address": $("#address").val() 
      }, function(results, status) { 
... 

использовать $("#address").val() вместо $("#address").attr("value").

Update: Смотрите также SO вопрос jQuery $obj.val() vs $obj.attr(“value”)

+0

Странно, поскольку оба приложения используют идентичный код и идентичные версии jQuery. В любом случае, он выполняет работу! –

+0

@WayneSmallman: проверьте ответы из ссылки для объяснения. –

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