Я реализовал автозаполнение Google Адресов в активном экземпляре Instantsearch.
mlsearch.addWidget(googlePlacesWidget);
Вспомогательная функция выглядит следующим образом:
var googlePlacesWidget = {
init: function(opts) {
var options = {
types: ['(regions)']
};
var autocomplete = new google.maps.places.Autocomplete(
document.getElementById('pac-input'),
options
);
autocomplete.addListener('place_changed', onPlaceChanged);
function onPlaceChanged() {
var location = autocomplete.getPlace().geometry.location;
var lat = location.lat();
var lng = location.lng();
opts.helper.setQueryParameter('aroundLatLng', lat + ',' + lng);
opts.helper.setQueryParameter('aroundRadius', $('select#radius_changed').val());
opts.helper.search();
}
}
};
Это отлично работает, фильтруя список участников.
Но, похоже, этот помощник по какой-то причине не является частью экземпляра InstantSearch.У меня есть виджет сброса, который отлично работает для любого другого фильтра, но он не отображается при настройке местоположения.Так что проблема в том, что я не могу сбросить его.В идеале это также сбрасывало бы результаты, когда пользователь очищает ввод, но нет обратного вызова, кроме place_changed
через Google API.
Как сделать этот виджет, который распознается как фактический фильтр,и активируйте кнопку сброса при поиске.
Просто для завершения, это виджет сброса (опять же, отлично работает с любым другим реализованным фильтром / виджетом):
mlsearch.addWidget(
instantsearch.widgets.clearAll({
container: '#clearfilter',
templates: {
link: 'Reset'
},
autoHideContainer: true,
clearsQuery: true,
})
);