Ответ 1
Также не забудьте позвонить:
google.maps.event.trigger(map, 'resize');
если вы изменили размер <div>
. A display:none
<div>
не имеет размера.
Есть ли способ предотвратить отображение карты Google Maps (JS, v3) с момента запуска? Я делаю предварительную обработку и хотел бы показать свой счетчик "Загрузка", пока все не будет хорошо (красноречиво положить, скрыть карту - например, контейнер div
), до тех пор, пока вся предварительная обработка не будет завершена - на в котором указывается карта).
Подсчет события карты idle
не очень помогает, так как карта уже отображается, когда это событие попадает.
Я знаю, что контейнер div
становится встроенным в GMaps после загрузки, моя первая идея заключалась в том, чтобы очистить атрибут style
(при прослушивании события idle
), но было бы интересно посмотреть если есть способ создания карты и не отображать ее до тех пор, пока не будет выполнена вся предварительная обработка.
Возможно, используя аргумент для конструктора new google.maps.Map
или MapOption
?
Любые мысли об этом?
Заранее благодарю вас!
Также не забудьте позвонить:
google.maps.event.trigger(map, 'resize');
если вы изменили размер <div>
. A display:none
<div>
не имеет размера.
Или вы можете просто скрыть это, как с помощью css visablility или css opacity.
$("#GoogleMap").css({ opacity: 0, zoom: 0 });
initialize();
google.maps.event.addListener(map,"idle", function(){
$('#Loader').hide();
$("#GoogleMap").css({ opacity: 1, zoom: 1 });
});
Это работает для меня. Я использую библиотеку JQuery.
$(document).ready(function(){
$('#Checkbox').click(function(){
$('#googleMapDiv').toggle();
initialize(); // initialize the map
});
});
это отлично работает для меня, я использую вкладки jquery
setTimeout(function() {
google.maps.event.trigger(map, "resize");
map.setCenter(new google.maps.LatLng(default_lat, default_lng));
map.setZoom(default_map_zoom);
}, 2000);
om ссылку https://code.google.com/p/gmaps-api-issues/issues/detail?id=1448
Это будет работать
google.maps.event.addListener(map, "idle", function ()
{
google.maps.event.trigger(map, 'resize');
});
лучший способ:
gmap.redraw = function() {
gmOnLoad = true;
if(gmOnLoad) {
google.maps.event.trigger(gmap, "resize");
gmap.setCenter(gmlatlng);
gmOnLoad = false;
}
}
и в событии click click:
$("#goo").click(function() {
if ($("#map_canvas").css("display") == "none") {
$("#YMapsID").toggle();
$("#map_canvas").toggle();
if (gmap != undefined) {
gmap.redraw();
}
}
});
в зависимости от того, что вы делаете, другая возможность может состоять в том, чтобы иметь несколько правил bools, которые вы установили true, когда каждый процесс завершен.
Например:
если у вас есть работа с геокодом, которую вы хотите подождать, вы можете иметь var GeoState
и в результате часть геокодера установила GeoState в true, затем установите функцию времени, чтобы проверить, вернулись ли все службы, когда они есть, сделать карту видимой.
другой способ показать скрытую карту, когда карта первый раз отдавая <div>
, чтобы установить стиль: видимость.
Когда сперва скрыто, используйте visibility = hidden
; показать использование visibility = visible