Угловая директива окна поиска карт Google: события не запускаются при попытке ограничить поиск (с опцией автозаполнения)
Я использую Angular Google Maps, чтобы получить карту с окном поиска.
Я пытаюсь ограничить поиск адресом и страной (Франция), поэтому я хотел бы использовать опцию "Автозаполнение" директивы окна поиска, как указано в документации.
Проблема в том, что autocomplete:true
бит в моем коде действительно ограничивает поиск, но предотвращает запуск событий (карта и маркер не обновляются). Но в консоли нет ошибки.
Однако, если я закомментирую или удалю autocomplete:true
, затем события запускаются (карта и маркер обновляются), но тогда поиск не ограничивается Францией и адресами...
Вот мой код:
var events = {
places_changed:function (searchBox) {
var place = searchBox.getPlaces();
if (!place || place == 'undefined' || place.length == 0) {
console.log('no place data :(');
return;
}
// refresh the map
$scope.map = {
center:{
latitude:place[0].geometry.location.lat(),
longitude:place[0].geometry.location.lng()
},
zoom:10
};
// refresh the marker
$scope.marker = {
id:0,
options:{ draggable:false },
coords:{
latitude:place[0].geometry.location.lat(),
longitude:place[0].geometry.location.lng()
}
};
}
};
$scope.searchbox = {
template:'searchbox.tpl.html',
events:events,
options:{
autocomplete:true,
types:['address'],
componentRestrictions:{
country:'fr'
}
}
};
И в HTML-файл:
<div style="height: 500px;">
<script type="text/ng-template" id="searchbox.tpl.html">
<input type="text"
placeholder="{{'searchbox.google.maps' | text}}"
style="width:270px; height:30px;">
</script>
<ui-gmap-google-map center='map.center' zoom='map.zoom'>
<!--SEARCHBOX-->
<ui-gmap-search-box template="searchbox.template"
events="searchbox.events"
position="BOTTOM_RIGHT"
options="searchbox.options"></ui-gmap-search-box>
<!--MARKER-->
<ui-gmap-marker coords="marker.coords"
options="marker.options"
events="marker.events"
idkey="marker.id">
</ui-gmap-marker>
</ui-gmap-google-map>
</div>
Что я делаю неправильно? Есть ли способ получить ограничения на поиск и сработавшие события?
Заранее спасибо!
1 ответ
Хорошо, я понял это, поэтому я отвечаю на свой вопрос, на случай, если кто-то застрянет!
Если autocomplete:true
тогда это не places_changed
а также searchBox.getPlaces()
, но это place_changed
а также searchBox.getPlace()
, И мы не получаем множество мест, а только одно место.
Вот рабочий код:
var events = {
place_changed:function (searchBox) {
var place = searchBox.getPlace();
if (!place || place == 'undefined') {
console.log('no place data :(');
return;
}
// refresh the map
$scope.map = {
center:{
latitude:place.geometry.location.lat(),
longitude:place.geometry.location.lng()
},
zoom:10
};
// refresh the marker
$scope.marker = {
id:0,
options:{ draggable:false },
coords:{
latitude:place.geometry.location.lat(),
longitude:place.geometry.location.lng()
}
};
}
};