Entweder ich bin ein Idiot oder das war eine ungeheuerliche Aufsicht seitens des Google Maps-Teams.Verwenden des Google Places-Suchfelds. Wie starte ich eine Suche durch einen Klick auf eine Schaltfläche?
Ich versuche, eine Ortssuche Anfrage auf einem Button-Klick-Ereignis in Verbindung mit dem Standard-Enter-Taste drücken -Ereignis (die derzeit gut funktioniert). Ich habe die Dokumentation über die Google Places search box durchgekämmt und keine sinnvolle Lösung gefunden.
Aus Gründen der Vertraulichkeit verwende ich das Beispiel aus der Demo.
function initialize() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-33.8902, 151.1759),
new google.maps.LatLng(-33.8474, 151.2631));
map.fitBounds(defaultBounds);
var input = /** @type {HTMLInputElement} */(document.getElementById('target'));
var searchBox = new google.maps.places.SearchBox(input);
var markers = [];
document.getElementById('button').addEventListener('click', function() {
var places = searchBox.getPlaces();
// places -> undefined
// The assumption is that I could just call getPlaces on searchBox
// but get nothing in 'places'
// Beyond that it doesn't even make a call to the Google Places API
// Currently the only way to perform the search is via pressing enter
// which isn't terribly obvious for the user.
}, false)
google.maps.event.addListener(searchBox, 'places_changed', function() {
var places = searchBox.getPlaces();
for (var i = 0, marker; marker = markers[i]; i++) {
marker.setMap(null);
}
markers = [];
var bounds = new google.maps.LatLngBounds()
for (var i = 0, place; place = places[i]; i++) {
var image = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
};
var marker = new google.maps.Marker({
map: map,
icon: image,
title: place.name,
position: place.geometry.location
});
markers.push(marker);
bounds.extend(place.geometry.location);
}
}
Dank einer Tonne! Tut mir leid, ich sehe das nur. Ich werde es versuchen und Sie wissen lassen, sobald ich im Büro bin. – jjhenry
Dadurch wird das Dropdown-Menü für Suchergebnisse mit den Vorschlägen gefüllt, oder? Aber gibt es eine Möglichkeit, auch das Verhalten zu simulieren, das man erhält, wenn man 'Enter' drückt? Wie in zeigen die Ergebnisse auf der Karte für die Eingabe, die im Eingabefeld ist, wenn Sie die Taste drücken? –
@CosminSD, nicht ganz verstehen? Die Google Places-Eingabe antwortet standardmäßig auf. Wenn Sie von einer anderen Quelle durch Drücken von Enter auffüllen möchten, können Sie die Schaltfläche einfach durch eine Eingabe ersetzen und onclick durch ein Onkeyup-Ereignis ersetzen. –
davidkonrad