Карта Google поставляется частично, серая область приходит вместо изображений с сервера google
иногда карта google поставляется частично с другой областью, которая становится серой. Есть одна загвоздка, если мы начнем Firebug, изображения приходят в эту серую область. Не знаю, почему это происходит. Кто-нибудь сталкивался и нашел решение, прошу поделиться.
9 ответов:
эта ошибка может возникнуть, если вы изменяете размер карты
DIV
. После изменения размера, попробуйте позвонить
Если вы используете v3 попробуйте
google.maps.event.trigger(map, "resize");
посмотрите здесь
Привет, если вы используете тумблер в DIV с контейнером карте вы называете несжижаемым в функции
associated with the trigger: $(".trigger").click(function(){ $(".panel").toggle("fast"); $(this).toggleClass("active"); resizeMap(); return false;
затем несжижаемым(); такой
function resizeMap() { google.maps.event.trigger(map,'resize'); map.setZoom( map.getZoom() ); }
Не забудьте установить переменную map как глобальную ;) ура
Я нашел простое решение для частично загруженной карты google. Обычно это вызвано
onLoad()
вызывается время от времени, когда остальная часть страницы (включая элемент карты) не полностью загружена. Это приводит к частичной загрузке карты. Простой способ обойти эту проблему-изменить вашonLoad
тег body действий.старый способ:
onload="initialize()"
новый способ:
onLoad="setTimeout('initialize()', 2000);"
это ждет 2 секунды, прежде чем Google Javascript получит доступ к правильному размеру атрибуты. Также убедитесь, что очистить кэш браузера, прежде чем попробовать его; иногда он застревает там :)
это моя верхняя часть Javascript, если вам интересно (точно так же, как описано в документации Google, но потому что я вызываю
Latitude
иLongitude
из переменных PHP, следовательно, фрагменты PHP.<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function initialize() { var myOptions = { center: new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>), zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var point = new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>); var marker = new google.maps.Marker({ position:point, map:map }) } </script>
Я просто хочу добавить к этому обсуждению, что у меня была эта проблема с серыми полосами, и это была не та же проблема, что мне нужно было использовать gmap.Функция изменения размера, но это было в моем css. В моем css у меня было
img { max-width:50% }
поэтому, когда я устанавливаю это в свой css-файл
#map-canvas { max-width:none; }
проблема исчезла! Я просмотрел весь google, но не смог найти этот ответ.
этот стиль решил мою проблему
#map_canvas img { max-width: none !important; }
это заставляет браузер позволить карте быть настолько широкой, насколько это необходимо-the
!important
по сути означает "не перезаписывать этот стиль".
выше решений не работает для меня.
я использовал
display:none
для моей карты, изменив его наvisibility:hidden
он отлично работает для меня.изменить
display:none
до
visibility:hidden
Я решил это таким образом, моя проблема была в устройстве вращения, это решение отлично работает:
$scope.orientation = function(){ var supportsOrientationChange = "onorientationchange" in window, orientationEvent = supportsOrientationChange ? "orientationchange" : "resize"; window.addEventListener(orientationEvent, function() { $interval(function(){ google.maps.event.trigger(map, 'resize'); },100); }); }; $scope.orientation();
У меня возникла эта проблема во время работы над другими частями моего сайта, поэтому я не заметил ее сразу, когда она началась. Пройдя через все изменения, которые я сделал за последний час, я наткнулся на виновника:
div { [... other css ...] overflow: auto; }
в моем css. Я удалил это и вуаля, это работает. (Конечно, я мог бы просто изменить атрибут overflow на моей карте div, но мне нужно только overflow: auto на пару divs.) Я уверен, что есть хорошая причина, но я довольно новичок в этом, поэтому я не знаю. В любом случае, я надеюсь это может кому-то помочь.