2015-10-18 3 views
0

Как закрыть результат поиска после выбора одного местоположения с помощью mapbox? Я использую функцию автообновления mapbox, но после выбора определенного места она не закрывает окно результатов поиска. Я добавил автозаполнения функцию, как это:Как закрыть результат поиска после выбора одного места с помощью карточного ящика

geocoder = L.mapbox.geocoderControl('mapbox.places', {position: 'topleft', keepOpen: true, autocomplete:true}); 
      geocoder.addTo(map); 

ответ

1

Удалить keepOpen вариант (который держит его всегда открыто) Затем, чтобы закрыть прослушивайте select события на экземпляре L.mapbox.geocoderControl. При запуске используйте метод _toggle.

var geocoder = L.mapbox.geocoderControl('mapbox.places', { 
    position: 'topleft', 
    //keepOpen: false, 
    autocomplete:true 
}); 

geocoder.addTo(map); 

geocoder.on('select', function() { 
    geocoder._toggle() 
}) 

Недокументированные и использует «частный» метод, таким образом, я не уверен, как к продолжительности жизни этого решения/хака. Но она работает;)

+0

Hi @ iH8 Спасибо за помощь. но похоже, что я что-то упускаю, поскольку я новичок в этом. Я добавил функцию автоматического завершения, упомянутую в моем обновленном сообщении. Нужно ли добавлять функцию после этого? –

+0

Обновлено мой пример – iH8

+0

Отличный (y) он работает :) –

0

У меня была такая же проблема, и управлять ими, чтобы исправить это так:

var geocoder = L.mapbox.geocoderControl('mapbox.places', { 
    position: 'topleft', 
    keepOpen: true, 
    autocomplete:true 
}); 

geocoder.addTo(map); 

geocoder.on('select', function() { 
    this._results.innerHTML = ''; 
    this._input.value = ''; 
}) 

Решение _toggle() не работает для меня, потому что он сделал поле близко навсегда (не мог» t откройте его снова, щелкнув значок лупы).

Как в решении @ iH8, это касается только частного метода, поэтому он может быть недолговечным.