Когда я загружаю карту Google (v3) с маршрутами в div, который скрыт от пользователя, результирующая карта не масштабируется и не центрируется правильно. Я попытался запустить событие resize
, но это лишь частично решило проблему.
Обычно при загрузке карты с маршрутами API автоматически находит оптимальный вид (т. е. уровень масштабирования и центр), чтобы показать всю поездку. Любые идеи, что я делаю неправильно?
См. JsFiddle.
<button id="show">Show</button>
<div id="a">
<div id="map_wrapper" style="display:none">
<div id="map_canvas" style="height: 354px; width:713px;"></div>
</div>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=initialize"></script>
<script>
var directionsService,
directionsDisplay,
map;
function initialize() {
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();
var mapOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP, disableDefaultUI: true }
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
directionsDisplay.setMap(map);
var start = 'New York, NY';
var end = 'Chicago, IL';
var request = { origin: start, destination: end, travelMode: google.maps.DirectionsTravelMode.DRIVING };
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
</script>
</div>
И джаваскрипт:
$(document).ready(function(e) {
$('#show').on('click', function() {
$('#map_wrapper').show();
google.maps.event.trigger(map, "resize");
});
});