Google Maps автозаполнение результат в модальном диалоговом окне начальной загрузки
у меня есть поле ввода автозаполнения Google Maps внутри модального диалогового окна Twitter Bootstrap, и результат автозаполнения не отображается. Однако, если я нажимаю клавишу со стрелкой вниз, он выбирает следующий результат автозаполнения, поэтому кажется, что код автозаполнения работает правильно, только что результат отображается неправильно. Может быть, это скрыто за модальным диалогом?
вот скриншоты :
Ввод чего-то в поле автозаполнения дает ничего
Нажатие клавиши со стрелкой вниз дает первый результат
и код :
<div class="modal hide fade" id="map_modal">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal">×</button>
<div class="control-group">
<label class="control-label" for="keyword">Cari alamat :</label>
<div class="controls">
<input type="text" class="span6" name="keyword" id="keyword">
</div>
</div>
<div id="map_canvas" style="width:530px; height:300px"></div>
</div>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
<script type="text/javascript">
$("#map_modal").modal({
show: false
}).on("shown", function()
{
var map_options = {
center: new google.maps.LatLng(-6.21, 106.84),
zoom: 11,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), map_options);
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-6, 106.6),
new google.maps.LatLng(-6.3, 107)
);
var input = document.getElementById("keyword");
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo("bounds", map);
var marker = new google.maps.Marker({map: map});
google.maps.event.addListener(autocomplete, "place_changed", function()
{
var place = autocomplete.getPlace();
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(15);
}
marker.setPosition(place.geometry.location);
});
google.maps.event.addListener(map, "click", function(event)
{
marker.setPosition(event.latLng);
});
});
</script>
Я старался изо всех сил решить это самостоятельно, но поскольку я не знаю html&css для результата автозаполнения (inspect element ничего не дает), я сейчас потерян. Какая-нибудь помощь?
спасибо раньше!
8 ответов:
проблема с
z-index
на.modal
использовать CSS разметка:
.pac-container { background-color: #FFF; z-index: 20; position: fixed; display: inline-block; float: left; } .modal{ z-index: 20; } .modal-backdrop{ z-index: 10; }
также вы можете проверить демо здесь
ps: спасибо @lilina за эту демонстрацию jsfiddle.com
Bootstrap
.modal
z-index
по умолчанию 1050.пользовательского интерфейса jQuery по
.ui-autocomplete
z-index
по умолчанию 3.так что положите это на CSS:
/* Fix Bootstrap .modal compatibility with jQuery UI Autocomplete, see http://stackoverflow.com/questions/10957781/google-maps-autocomplete-result-in-bootstrap-modal-dialog */ .ui-autocomplete { z-index: 1051 !important; }
творит чудеса! :)
в целом, вы можете просто поднять вверх .PAC-container z-index для чего-либо выше 1050, и вам не понадобятся другие переопределения CSS.
Я обнаружил, что эта проблема также существует для диалоговых окон пользовательского интерфейса jQuery. Поэтому, если это окажется полезным для кого-либо еще, вот краткая ссылка на то, где модалы Bootstrap / jQuery UI живут в Z-плоскости:
jQuery UI Dialog - z-index: 1001 Bootstrap Modal - z-index: 1050
в моем сценарии .значение z-индекса PAC-контейнера будет инициализировано и переопределено до 1000, даже если я установлен в CSS. (возможно, с помощью Google API-интерфейс?)
мое грязное исправление
$('#myModal').on('shown', function() { $(".pac-container").css("z-index", $("#myModal").css("z-index")); }