2015-08-03 12 views
-1

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

var input = document.getElementById('start');   
var autocomplete = new google.maps.places.Autocomplete(input);   

autocomplete.bindTo('bounds', map); 
var infowindow = new google.maps.InfoWindow(); 

// when user has clicked on an autocomplete suggestion 
google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    infowindow.close(); 
    var place = autocomplete.getPlace(); 

    // get town of selected place 
    function getTown(address_components) { 
     var geocoder = new google.maps.Geocoder(); result = address_components; 
     var info = []; 
     for (var i = 0; i < result.length; ++i) { 
      if (result[i].types[0] == "locality") { 
       return result[i].long_name; 
      } 
     } 
    }; 
    var town = getTown(place.address_components); 
     // if place is in London, move marker to the place 
     if (town == 'London') { 
      alert('in London'); 
    } else { 
     // if not, do nothing and alert user 
     alert('you must click on a place in London'); 
    } 
}); 

Как я могу получить доступ к городу var за пределами этой функции на всей странице, поэтому я делаю условие на его основе?

ответ

1

Вы можете сделать переменную за пределами области обратного вызова, чтобы установить результат.

var input = document.getElementById('start');   
 

 
var map = new google.maps.Map(document.getElementById('map-canvas'), { 
 
    zoom: 12, 
 
    center: {lat: 51.507351, lng: -0.127758} 
 
}); 
 

 
var autocomplete = new google.maps.places.Autocomplete(input);  
 
autocomplete.bindTo('bounds', map); 
 

 
var town; 
 
// when user has clicked on an autocomplete suggestion 
 
google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
    function getTown(address_components) { 
 
    result = address_components; 
 
    var info = []; 
 
    for (var i = 0; i < result.length; ++i) { 
 
     if (result[i].types[0] == "locality") { 
 
     return result[i].long_name; 
 
     } 
 
    } 
 
    }; 
 
    document.getElementById('place').innerHTML = ''; 
 
    document.getElementById('town').innerHTML = ''; 
 
    town = getTown(autocomplete.getPlace().address_components); 
 
}); 
 

 
function inLondonCheck(placeName) { 
 
    document.getElementById('place').innerHTML = placeName + " in London? " + (town === 'London'); 
 
    document.getElementById('town').innerHTML = town || ''; 
 
} 
 

 
setInterval(function() { 
 
    if (town) inLondonCheck(autocomplete.getPlace().name); 
 
}, 500);
html, 
 
body, 
 
#map-canvas { 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
}
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=places"></script> 
 

 
<input id="start"> 
 
<div>Place<pre id="place"></pre></div> 
 
<div>Town<pre id="town"></pre></div> 
 
<div id="map-canvas"></div>

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