2015-11-15 3 views
0

Я не могу заставить свое геокодирование работать на одной из моих страниц jsp. Он работает в другом, но это вызывает проблемы.Uncaught TypeError: Невозможно прочитать «геокод» свойства undefined

У меня есть base.jsp, который является общим для всех моих страниц jsp. который имеет:

var geocoder; 

$(document).ready(function initialize() {  
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
     center : { lat : 56.138, lng : 8.967 }, 
     zoom : 7, 
     disableDoubleClickZoom : true 
     });   

    geocoder = new google.maps.Geocoder();        
}); 

function addressTolatlng(address){ 
    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(); 
      var myLatlng = new google.maps.LatLng(latitude, longitude); 

      console.log(myLatlng); 

      } 
    }); 
} 

Это моя страница JSP, которая дает ошибку:

$(document).ready(function() { 
    console.log(input); 
    var input = document.getElementById('addressField');   
    var autocomplete = new google.maps.places.Autocomplete(input, { 
     types: ["geocode"] 
    }); 

    autocomplete.bindTo('bounds', map);       
}); 

<input type="text" placeholder="address" name="address" id="addressField" class="form-control" aria-label="..." value=""> 

<script> 
$("#addressField").keyup(function() {          
    var address = document.getElementById('addressField').value;  
    addressTolatlng(address); 
});                  
</script> 

Я получаю неперехваченный TypeError: Не удается прочитать свойство «геокодирования» неопределенных при выполнении этого. Но у меня есть еще одна страница с одинаковой настройкой, и там она работает отлично, поэтому для меня это странно, как этот человек не будет вести себя одинаково.

консоль также дает следующие:

(anonymous function) @ eventHandler?action=createEvent:790 
m.event.dispatch @ jquery-1.11.3.min.js:4 
r.handle @ jquery-1.11.3.min.js:4 

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

+0

У вас есть анонимная функция, и геокод определен за ее пределами, поэтому он не будет распознан внутри него. Значение будет возвращено как неопределенное. –

+0

Я вижу, что консоль также дает намек на анонимную функцию. Но это работает на другой странице, почему это не будет работать здесь? – JonCode

+0

В основном то же, что я сказал, даниал объяснил. Вы должны понимать, что если вы хотите передать переменные в функцию, она должна быть установлена ​​в параметрах этой функции. например: 'function your_function ($ a, $ b, $ c) {console.log ($ a); //

ответ

3

В этой строке кода

geocoder.geocode({ 'address': address}, function(results, status) {

Геокодер не определено (или нуль), и ничто не может быть доступна в нем б/с она не знает, что Геокодер.

Причина, по которой она не определена, заключается в том, что геокодер выходит за рамки вашей функции addressTolatlng. Чтобы исправить это, вы можете: a) передать геокодер в вашу функцию через параметр b) снова определить геокодер в этой функции или c) добавить функцию к вашей функции iniatilize() (но я не 100% от нее)

Надеюсь, что это поможет!

+0

Спасибо за разъяснение этого. Я пошел, и он работает сейчас :) – JonCode

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