2015-10-28 2 views
0

Я использую внешний скрипт для загрузки карты, и есть кнопка, которая находила точное местоположение с использованием почтового индекса. Вопрос в том, как я могу отправить одну функцию в другую с помощью Javascript?Загрузите карту с почтового индекса с помощью API Google

Первая функция, где берется почтовый индекс является следующее:

function findLocation(){ 
    var x = document.getElementById("postcode_car_park"); 
    getLocation(); 

    function getLocation(){ 
     if (navigator.geolocation){ 
      navigator.geolocation.watchPosition(reverseGeoLookup); 
     } 
     else{ 
      x.innerHTML = "Geolocation is not supported by this browser."; 
     } 
    } 

    function reverseGeoLookup(position) { 
     console.log(position); 
     var lat = position.coords.latitude; 
     var lon = position.coords.longitude; 
     var req = new XMLHttpRequest() 
     req.open("GET", "http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lon+"&sensor=true", true) 
     req.onreadystatechange = function() { 
      if(req.readyState == 4) { 
       var result = JSON.parse(req.response).results 
       for(var i = 0, length = result.length; i < length; i++) { 
        for(var j = 0; j < result[i].address_components.length; j++) { 
         var component = result[i].address_components[j] 
         //console.log(component.long_name); 
         if(~component.types.indexOf("postal_code")) { 
          var out = document.getElementById('postcode_car_park'); 
          out.style.display= "block"; 
          out.innerHTML = "<b>" + component.long_name + "</b>"; 
          return false; 
         } 
        } 
       } 
      } 
     } 
     req.send(); 

    } 

} 

И другую функцию, где я хочу, чтобы отправить component.long_name от первого заключается в следующем:

function automaticMap(){ 
    $("<script />", { 
     "id":"scripting", 
     "data-location":"http://en.parkopedia.co.uk/parking/" + postcode, 
     "data-options":"l=0&tc=0&zc=1&country=UK&ts[]=4&ts[]=3&ts[]=2", 
     "data-size":"650:400", 
     "src":"mapView.js", 
     "type":"text/javascript" 
    }).appendTo("#map") 
} 

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

ответ

1

Один из способов: reverseGeoLookup() просто верните component.long_name, если я правильно понял ваш вопрос. Затем сохраните это значение в переменной и передайте его в значение automaticMap().

Так var component_long_name = reverseGeoLookup(position), а затем automaticMap(component_long_name)

+0

В каком 'for' должен добавить' var'to отправить его на другой функции? – CapAm

+0

Я попытался использовать после 'req.onreadystatechange = function() {' и работает отлично, но окна появляются много раз. Снаружи это не работает. Есть идеи? – CapAm

+0

Не могли бы вы разместить jsfiddle, который, вероятно, поможет прояснить. – coderrick

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