2013-05-01 1 views
2

Возможно ли это сделать?Установить начальное местоположение карты при использовании автозаполнения мест - API Google Адресов

Это то, что я нашел в Google https://groups.google.com/forum/?fromgroups=#!topic/google-maps-js-api-v3/kdgueJzwvK4.

Я сделал это:

# TODO In case input has currently a value 
    if autocomplete.getPlace() 
    places.pin(autocomplete.getPlace(), map, input) 

Но autocomplete.getPlace() возвращает неопределенное значение, когда пользователь не срабатывает какое-то событие.

После пользователь вводит некоторые данные, которые я могу использовать places.pin(autocomplete.getPlace(), map, input) без проблем

Я попытался вызвать изменение на входе, но не везло $(input).trigger('change')

+0

Не уверен, если это то, что вы ищете, но в прошлом я был в состоянии заставить начальное расположение карты с помощью '// Использование геокодировании geolocate geocoder = new google.maps.Geocoder(); // Установите значение по умолчанию myLatLng, которое будет использоваться, если google.loader.ClientLocation не удалось var myLatlng = new google.maps.LatLng (40.8802950337396, -102.21679674999996); // Если ClientLocation был заполнен загрузчиком, используйте эту информацию вместо \t if (google.loader.ClientLocation) { \t \t gmapZoom = 13; \t \t myLatlng = new google.maps.LatLng (google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude); \t} ' – Dropzilla

+0

Я забыл сказать, что нашел этот ответ http://stackoverflow.com/questions/10772282/google-maps-places-api-v3-autocomplete-select-first-option-on-enter-and -have, где есть скрипка, которая устанавливает местоположение в соответствии с длинным lat, но мне нужно установить карту в соответствии с тем, что находится на входе. Кажется, ваши решения также подходят для длинных лат. В этом случае, как я могу расширить свое решение для удовлетворения моих потребностей? – juanpastas

+0

Кажется, ответ есть, но есть слишком много кода :( – juanpastas

ответ

3

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

<!DOCTYPE html> 
    <html lang="en"> 
      <head> 
      </head> 
    <body> 
     <input id="gmap_start_address" type="text" /> 
    </body> 
</html> 

initialize(); 
     // Handle enter button click event for start address input text field 
     $("#gmap_start_address").keypress(function(event){ 
      if(event.keyCode == 13){ 
       event.preventDefault(); 
       goStartAddr(); 
      } 
     }); 

/** 
* Handle initialization of google map 
* @params 
*/ 
function initialize() { 
    var gmapZoom = 4; 
    geocoder = new google.maps.Geocoder(); 
    // Set default myLatLng to be used if google.loader.ClientLocation fails 
    var myLatlng = new google.maps.LatLng(40.8802950337396, -102.21679674999996); 
    // If ClientLocation was filled in by the loader, use that info instead 
    if (google.loader.ClientLocation) { 
     gmapZoom = 13; 
     myLatlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude); 
    } 
    var myOptions = { 
     zoom: gmapZoom, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var polyOptions = { 
     strokeColor: '#5F5CFA', 
     strokeOpacity: 0.5, 
     strokeWeight: 3 
    } 
    poly = new google.maps.Polyline(polyOptions); 
    poly.setMap(map); 
    // Add a listener for the click event 
    google.maps.event.addListener(map, 'click', addLatLng); 
} 

/** 
* Handle GO button click to process start address 
* @params 
*/ 
function goStartAddr(){ 
    var startAddr = $('#gmap_start_address').val(); 
    if(startAddr != '' && startAddr != 'Starting address, city, zip code'){ 
     placeStartMkr(); 
    } else { 
     alert('Please enter start address.'); 
     $('#gmap_start_address').focus(); 
    } 
} 
/** 
* Handle marker placement from human address start point. 
* Originally this function placed a starting marker 
* Starting marker code is commented out and preserved for 
* ease of use in the future. 
* @params 
*/ 
function placeStartMkr(){ 
    // Grab address 
    var humanAddr = $('#gmap_start_address').val(); 
    geocoder.geocode({ 'address': humanAddr}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
      map.setCenter(results[0].geometry.location); 
      map.setZoom(16); 
     } else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
} 
Смежные вопросы