[英]Google Maps fitBounds not working on map inside of modal
我在一个模态中有一个 map,我试图根据一组点调用 fitBounds。 点的值将根据数据库值而有所不同,但为了简化起见,我设置了以下值。
当 map 放置在模态之外时,它工作正常。 然而,一旦进入模态,fitBounds 调用总是会缩小太多。
我认为这可能与模态不可见有关,但我已将 function 放在模态回调中,这似乎没有帮助。
该站点使用的是 Laravel 5.8.38。
我的页面内容:
<head>
<!-- CSS Includes - Bootstrap 4.4.1 -->
{{ Html::style('css/app.css') }}
</head>
<body>
<div class="content">
<button class="btn btn-primary" data-toggle="modal" data-target="#map_modal">View Map</button>
</div>
<div class="modal" id="map_modal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md modal-dialog-centered" role="document">
<div class="modal-content">
<div id="map" style="margin: 15px; height: 300px; width: 300px;"></div>
</div>
</div>
</div>
<!-- JavaScript Includes - jQuery 3.4.1 -->
{{ Html::script('js/app.js') }}
<script type="text/javascript">
var map;
$('#map_modal').on('show.bs.modal', function (e) {
showMap();
});
function showMap() {
// points a and b will vary depending on database values and which elements the user interacts with
var a = new google.maps.Marker({
position: new google.maps.LatLng(41.7760588,-74.2972913),
map: map,
label: "A"
});
var b = new google.maps.Marker({
position: new google.maps.LatLng(41.9350477,-74.024461),
map: map,
label: "A"
});
var bounds = new google.maps.LatLngBounds();
bounds.extend(a.getPosition());
bounds.extend(b.getPosition());
map.fitBounds(bounds);
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 41.798057, lng: -73.973488},
zoom: 8
});
}
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[key]&callback=initMap" async defer></script>
</body>
更新:
$('#request_modal').on('show.bs.modal', function (e) {
showMap();
});
需要改为
$('#request_modal').on('shown.bs.modal', function (e) {
showMap();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.