Автозаполнение поиска местоположения, интегрированное с геокодированием bing/google
любые хорошие предложения по автозаполнению поиска местоположения, которые интегрируются с чем-то вроде данных о местоположении Google или Bings?
Я хочу захватить местоположение моих пользователей при регистрации, в настоящее время у меня есть поле ввода свободного текста. Я хочу иметь какой-то автозаполнение, которое ведет пользователя к вводу более санированной информации, в идеале я хотел бы геокодировать пользователя тоже.
в настоящее время я использую jQuery автозаполнение для autosearch, но это требует от меня предоставления данных о местоположении, которых у меня нет или которые я хочу поддерживать.
4 ответов
Если вы не хотите поддерживать собственную базу данных местоположений (хорошо для вас!), то вы можете посмотреть на Freebase и их Freebase Предложить плагин для jQuery. Они сделают все автоматическое завершение и даже пользовательский интерфейс предложения для вас, и вы можете указать, что вы просто хотите автоматически завершить местоположения (или только округа США, или что угодно).
существуют справочники, которые могут предоставить базу данных имен местоположений, но не будут выполнять автозаполнение пользовательского интерфейса для вас. GeoNames, например, имеет хороший набор веб-служб, который вы можете сопоставить с автозаполнением jQuery.
мы делаем что-то подобное для поля "Адрес выставления счетов" наhttps://bombsheets.com/ -- вам нужно сделать вызов AJAX, чтобы получить параметры автозаполнения:
$(".address-autocomplete").autocomplete('/get_address', {
delay: 250,
scrollHeight: 400,
matchSubset: false,
cacheLength: 10,
minChars: 3
});
а затем используйте сервер API геолокации, чтобы получить фактические адреса (мы используем Rails' excellent GeoKit).
посмотреть этот вопрос дополнительные цвета.
https://github.com/lorenzsell/Geocoded-Autocomplete Этот плагин jQuery использует Google Geocoding Javascript API и автозаполнение jQuery UI.
<script>
function init() {
var input = document.getElementById('locationTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
///Start for getting lat and lang
google.maps.event.addListener(autocomplete, 'place_changed',
function() {
var place = autocomplete.getPlace();
var lat = place.geometry.location.lat();
var lng = place.geometry.location.lng();
document.getElementById("lat").innerHTML = "Lat: "+lat+"<br />Lng: "+lng;
}
);
////End
}
google.maps.event.addDomListener(window, 'load', init);
</script>