2009-10-12 3 views
40

Используя API Карт Google и JQuery, я хотел бы иметь поле «Адрес», которое при вводе будет автозаполнять введенный там адрес. Как это может быть достигнуто?Как создать поле для автозаполнения адресов с картами google api?

+0

Смотрите этот вопрос: http://stackoverflow.com/questions/1323661/location-search-autocomplete-that-integrates-with-bing-google-geocoding –

+0

Вот пример (до Google Maps API автозаполнения) http://gerger.co/blog/2011/02/17/google-maps-api-v3-location-search-with-jquery-autocomplete-plugin/ – azizunsal

+0

Это довольно хорошо: http: // gmap3. net/examples/address-lookup.html –

ответ

59

Ну, лучше поздно, чем никогда. API карт Google v3 теперь предоставляет автозаполнение адресов.

API Docs здесь: http://code.google.com/apis/maps/documentation/javascript/reference.html#Autocomplete

Хороший пример здесь: http://code.google.com/apis/maps/documentation/javascript/examples/places-autocomplete.html

+9

будьте осторожны, используя это как запись для адреса доставки. например, попробуйте ввести '11960 проспект Айова # 10, los angeles ca'. Этот адрес требует квартиры, но их API не знает этого и на самом деле даже не позволит вам перейти на этот адрес. Другие адреса, которые я пробовал, которые требуют, чтобы квартира # работала, но в их базе данных есть некоторые, которые не работают. Отлично подходит для прямой карты, но не ожидайте, что подтвержденный адрес будет отправлен в –

+0

. Я согласен, это довольно простой и не устраивает всех. Но его очень легко настроить и хорошо работать. – alt

+4

Вы также не можете использовать это на сайте за регистрационным номером, не заплатив минимум 10 000 долларов США за год (нижняя цена для API Google Maps v3 для бизнеса) –

2

Я действительно сомневаюсь в этом - API карт google отлично подходит для геокодирования известных адресов, но обычно возвращает данные, подходящие для операций в стиле автозаполнения. Не обращайте внимания на то, чтобы не ударить API таким образом, чтобы очень быстро съесть свой запрос на геокодирование.

3

Дрейфует немного, но было бы легко легко авторизовать Город/штат США или город Сити/Прованс, когда пользователь вводит свой почтовый код с помощью таблицы поиска.

Вот как вы могли бы сделать, если бы вы могли заставить людей подчиниться вашей воле:

  1. Пользователь входит: почтовый (почтовый) код

    Вы заполняете: государства, города (провинция, Канада)

  2. Пользователь начинает вводить: название улицы

    Вам: автозаполнения

  3. Вы дисплей: диапазон разрешенных номеров адресов

    Пользователь: вводит номер

Готово.

Вот как это естественно для людей, чтобы сделать это:

  1. Пользователь входит: номер адреса

    Вам: не делать ничего

  2. Пользователь начинает входить: название улицы

    Вы: автозаполнения, рисунок из массивного списка всех улиц в стране

  3. Пользователь входит: город

    Вы: автозаполнения

  4. Пользователь входит: состояние/Прованс

    Вы: это сусло h автозаполнение нескольких символов?

  5. Вы: почтовый код автозаполнения (zip), если вы можете (потому что некоторые кодовые города).


Теперь вы знаете, почему люди взимают $$$, чтобы сделать это. :)

Для адресной улицы, рассмотрите две части: цифровую и уличную. Если у вас есть почтовый индекс, вы можете сузить доступные улицы, но большинство людей сначала вводит числовую часть, которая является backwa

3
Below I split all the details of formatted address like City, State, Country and Zip code. 
So when you start typing your street name and select any option then street name write over street field, city name write over city field and all other fields like state, country and zip code will fill automatically. 
Using Google APIs. 
------------------------------------------------ 
<script type="text/javascript" 
src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> 
<script type="text/javascript"> 
google.maps.event.addDomListener(window, 'load', function() { 
    var places = new google.maps.places.Autocomplete(document 
      .getElementById('txtPlaces')); 
    google.maps.event.addListener(places, 'place_changed', function() { 
     var place = places.getPlace(); 
     var address = place.formatted_address; 
     var value = address.split(","); 
     count=value.length; 
     country=value[count-1]; 
     state=value[count-2]; 
     city=value[count-3]; 
     var z=state.split(" "); 
     document.getElementById("selCountry").text = country; 
     var i =z.length; 
     document.getElementById("pstate").value = z[1]; 
     if(i>2) 
     document.getElementById("pzcode").value = z[2]; 
     document.getElementById("pCity").value = city; 
     var latitude = place.geometry.location.lat(); 
     var longitude = place.geometry.location.lng(); 
     var mesg = address; 
     document.getElementById("txtPlaces").value = mesg; 
     var lati = latitude; 
     document.getElementById("plati").value = lati; 
     var longi = longitude; 
     document.getElementById("plongi").value = longi;    
    }); 
}); 

0

Есть некоторые удивительные библиотеки, такие как выбор2, но это не соответствует моей потребности , Я сделал образец с нуля, чтобы использовать простой текст ввода.

Я использую только бутстрап и JQuery.

Надеется, что это будет полезно

`https://jsfiddle.net/yacmed/yp0xmdf5/` 
1

Это легко, но примеры API Google дадут вам подробные объяснения с тем, как вы можете получить карту для отображения введенного местоположения. Только для функции автозаполнения вы можете сделать что-то подобное.

Во-первых, включите веб-службу API Google Адресов. Получить ключ API. Вам нужно будет использовать его в теге скрипта в html-файле.

<input type="text" id="location"> 
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[YOUR_KEY_HERE]&libraries=places"></script> 
<script src="javascripts/scripts.js"></scripts> 

Используйте файл сценария для загрузки класса автозаполнения. Ваш файл scripts.js будет выглядеть примерно так.

// scripts.js custom js file 
$(document).ready(function() { 
    google.maps.event.addDomListener(window, 'load', initialize); 
}); 

function initialize() { 
    var input = document.getElementById('location'); 
    var autocomplete = new google.maps.places.Autocomplete(input); 
} 
Смежные вопросы