Witajcie mam problem na który szukam odpowiedzi już od dłuższego czasu i nie znalazłem na nie odpowiedzi. Problemem jest specyficzne zachowanie google places Autocomplete.
Założenia:
1.Input musi posiadać przycisk szukaj.
2. Jeśli klient nie wybierze lokalizacji ale wciśnie enter to ma wybać pierwszą pozycję z listy (zrobione)
3. **Teraz sedno problemu: **
jeśli ktoś wpisze coś w autocomplete ale nic nie wybierze i nie wciśnie entera ale wciśnie przycisk szukaj to również powinno wyszukać pierwszą pozycję z listy.
i teraz tak:
Podpunkt nr 2 może byćzrealizowany przez
var pac_input = document.getElementById('searchTextField');
(function pacSelectFirst(input) {
// store the original event binding function
var _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;
function addEventListenerWrapper(type, listener) {
// Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
// and then trigger the original listener.
if (type == "keydown") {
var orig_listener = listener;
listener = function(event) {
var suggestion_selected = $(".pac-item-selected").length > 0;
if (event.which == 13 && !suggestion_selected) {
var simulated_downarrow = $.Event("keydown", {
keyCode: 40,
which: 40
});
orig_listener.apply(input, [simulated_downarrow]);
}
orig_listener.apply(input, [event]);
};
}
_addEventListener.apply(input, [type, listener]);
}
input.addEventListener = addEventListenerWrapper;
input.attachEvent = addEventListenerWrapper;
var autocomplete = new google.maps.places.Autocomplete(input);
})(pac_input);
Wtedy wciśnięcie klawisza enter wybierze 1 pozycję z listy.
Problemem jest wersja 2 (nic nie wybieramy ale i tak po wciśnięcu przycisku szukaj wyszukuje nam 1 muejscowość zz listy - czy ma ktoś jakieś ładne rozwiazanie tego?
do głowy przychodzi mi jedynie rozwiązanie w którym puszczę osobnbego requesta w button search click do api ggoogle ze sttringiem wpisanym w moim impucie - pobiorę lat and lan z listy i wrócę.
Ale:
1.Jeśli wyślę dane pod adres http://maps.googleapis.com/maps/api/geocode/json?address=warszawa
to dostanę listę pasujących match ake bnie będzie to auto sugest tylko dopasowanie dosłowne (pomyle spację nie dostane nic)
Coś takiego wymagałoby dostępu do API googla chronionego przez klucz = płatnie.
wtedy mógłbym użyć https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=API_KEY
.
Czy ktoś zna/ kojarzy rozwiazanie probilemu inne niż korzystnie z Płatnego API?
Z góry dzięki za odpowiedzi bo strasznie długo z tym się męcze.
- map issue.png (54 KB) - ściągnięć: 137