Подтвердить что ты не робот

Карта Google поставляется частично, вместо изображений с сервера google появляется серая область

Иногда google-карта частично появляется, а другая область становится недоступной. Есть один улов, если мы запустим Firebug, изображения попадают в ту серой области. Не знаю, почему это происходит. Кто-нибудь когда-либо испытал это и нашел решение, пожалуйста, поделитесь.

4b9b3361

Ответ 1

Эта ошибка может возникнуть, если вы изменяете размер карты DIV. После изменения размера попробуйте вызвать функцию gmap.checkResize().

Ответ 2

Если вы используете v3 try

google.maps.event.trigger(map, "resize");

Также посмотрите здесь

Ответ 3

Привет, если вы используете toggle в div с контейнером карты, вы вызываете resizeMap в функции

associated with the trigger:
        $(".trigger").click(function(){
        $(".panel").toggle("fast");
        $(this).toggleClass("active");
         resizeMap();
        return false;

затем resizeMap(); как это

function resizeMap()
{
google.maps.event.trigger(map,'resize');
map.setZoom( map.getZoom() );
}

не забудьте указать переменную map как глобальную;) приветствия

Ответ 4

Я нашел простое решение для частично загруженной карты google. Обычно это вызвано вызовом onLoad() в то время, когда остальная часть страницы (включая ваш элемент карты) не полностью загружена. Это вызывает частичную загрузку карты. Простым способом решения этой проблемы является изменение тега тега onLoad.

Старый способ:

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>

Ответ 5

Я просто хочу добавить к этому обсуждению, что у меня тоже была проблема с серыми полосками, и это не было той же проблемой, что мне нужно было использовать функцию gmap.Resize, но это было в моем css. В моем css я имел

img { 
max-width:50% 
}

поэтому, когда я устанавливаю это в свой файл css

#map-canvas { 
max-width:none;
}

Проблема исчезла! Я просмотрел google, но не смог найти ответ.

Ответ 6

этот стиль решил мою проблему

#map_canvas img { max-width: none !important; }

Это заставляет браузер позволять карте быть такой же широкой, какой она должна быть - !important по существу означает "не перезаписывать этот стиль".

Ответ 7

Я решил это так, моя проблема была в ротационном устройстве, это решение отлично работает:

$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();

Ответ 8

У меня возникла эта проблема во время работы над другими частями моего сайта, поэтому я не заметил ее правильно, когда она началась. Пройдя все изменения, которые я совершил в последний час, я наткнулся на виновника:

div
{
    [... other css ...]
    overflow: auto;
}

в моем css. Я удалил это и вуаля, он работает. (Конечно, я мог бы просто изменить атрибут переполнения на моем div div, но мне нужно только переполнение: auto на пару div.) Я уверен, что есть веская причина, почему, но я довольно новичок в этом, поэтому я не знать. В любом случае я надеюсь, что это может помочь кому-то.