Instantsearch Google Places Autocomplete Helper не является частью экземпляра - PullRequest
0 голосов
/ 10 мая 2018

Я реализовал автозаполнение 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,
    })
);
...