Список автозаполнения Карт Google
Интересно, сможет ли кто-нибудь помочь мне, пожалуйста.
Я использую приведенный ниже код для выполнения действия автозаполнения Google Карт при вводе пользователем адреса:
// JavaScript Document
var geocoder;
var map;
var marker;
function initialize(){
var myOptions = {
zoom: 6,
center: new google.maps.LatLng(54.312195845815246, -4.45948481875007),
mapTypeId: google.maps.MapTypeId.TERRAIN,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.TOP_RIGHT
},
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.ZOOM_PAN,
position: google.maps.ControlPosition.TOP_LEFT
},
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.BOTTOM_LEFT
}
};
map = new google.maps.Map(document.getElementById('map'), myOptions);
geocoder = new google.maps.Geocoder();
marker = new google.maps.Marker({
map: map,
draggable: true
});
}
$(document).ready(function() {
initialize();
$(function() {
$("#address").autocomplete({
//This bit uses the geocoder to fetch address values
source: function(request, response) {
geocoder.geocode( {'address': request.term }, function(results, status) {
response($.map(results, function(item) {
return {
label: item.formatted_address,
value: item.formatted_address,
latitude: item.geometry.location.lat(),
longitude: item.geometry.location.lng()
}
}));
})
},
//This bit is executed upon selection of an address
select: function(event, ui) {
$("#osgb36lat").val(ui.item.latitude);
$("#osgb36lon").val(ui.item.longitude);
var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
marker.setPosition(location);
map.setZoom(16);
map.setCenter(location);
}
});
});
google.maps.event.addListener(marker, 'dragend', function() {
geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]) {
$('#address').val(results[0].formatted_address);
$('#osgb36lat').val(marker.getPosition().lat());
$('#osgb36lon').val(marker.getPosition().lng());
var point = marker.getPosition();
map.panTo(point);
}
}
});
});
})
и вот как я помещаю это в мою форму.
<div>
<input name="address" type="text" id="address" size="40" maxlength="40" style="font:Calibri; font-size:12px" />
</div>
Теперь я хотел бы ограничить количество элементов, доступных для просмотра в списке. Я провел некоторые исследования на нескольких форумах и на сайте Google Maps, но, похоже, не могу найти решение, поэтому я даже не уверен, возможно ли это.
Мне просто интересно, может ли кто-нибудь взглянуть на это, пожалуйста, и дать небольшое руководство о том, как я могу это сделать.
Большое спасибо и всего наилучшего
2 ответа
После некоторых дальнейших исследований я нашел здесь замечательное руководство: http://rjshade.com/2012/03/27/Google-Maps-autocomplete-with-jQuery-UI/ которое мне удалось адаптировать.
API Карт Google V3 теперь включает функцию автозаполнения, которая адаптирует любое поле ввода текста к местоположениям автозаполнения и / или Местам. Он пока не показывает эскизы, но добавление Places будет хорошо для некоторых случаев использования, вот подробности:
Документация: http://code.google.com/apis/maps/documentation/javascript/places.html
Ссылка: http://code.google.com/apis/maps/documentation/javascript/reference.html
Пример: http://code.google.com/apis/maps/documentation/javascript/examples/places-autocomplete.html
Я думаю, что это поможет вам.....