Google Maps Javascript API V3 - непрерывное панорамирование - PullRequest
0 голосов
/ 21 сентября 2011

Я пытаюсь заставить Google Карты непрерывно плавно перемещаться, если пользователь не наведет указатель мыши на карту. Использование обработчика события 'idle' вызывает анимацию прерывистого панорамирования. Использование других событий не даст мне результатов. Рекурсия моей initPan() функции просто вызывает сбой страницы. Пример «непрерывного» метода панорамирования здесь .

function initialize() {
    var myOptions = {
        zoom: 5,
        center: markers.sanjose,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById('map_canvas'),
            myOptions);

    google.maps.event.addListener(map, 'idle', function() {
        initPan(map);
    });

    google.maps.event.addListener(map, 'mouseout', function() {
        stopPan(map);
    });
}

function initPan(map) {
   map.panBy(5, 0);
}

function stopPan(){
}

1 Ответ

5 голосов
/ 23 сентября 2011

Не много просмотров, без комментариев, но вот мое решение, если кто-нибудь когда-либо сталкивался с подобной ситуацией.

При запуске повторяющихся методов пользовательскими событиями, такими как panBy(), я столкнулся с проблемамис API V3.В то время как V2 имел событие 'moveend', оно было заменено событием 'idle'.Тем не менее, «холостой» имеет небольшую задержку после панорамирования.Другим вариантом является использование события «bounds_changed», но это событие срабатывает несколько раз в секунду, в результате чего карта никогда не загружает плитки (следовательно, нет панорамирования).

Я наконец решил эту проблему, добавив задержку тайм-аутадо «bounds_changed», очищая тайм-ауты, которые будут складываться в нескольких триггерах событий.Это фрагмент кода, который решил проблему.

google.maps.event.addListener(map, 'bounds_changed', function() {
  if (moving) {
    if (myTimeout) {
      window.clearTimeout(myTimeout);
    }
    myTimeout = window.setTimeout(initPan(map), 2200);
  }
});

Я нашел решение на форуме API , и вы можете увидеть пример моего непрерывного панорамирования здесь .И если это не имеет никакого смысла, посмотрите на полный код примера и удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...