Предотвратите перенос мира в GMap v3 - PullRequest
6 голосов
/ 12 апреля 2011

Я сейчас перехожу с v2 на v3.Мир не должен повторяться в продольном направлении.

В v2 это может быть заархивировано примерно так:

var proj = new GMercatorProjection(30); 
proj.tileCheckRange = function(a,b,c) { 
  var tileBounds = Math.pow(2,b);
  if (a.y<0 || a.y >= tileBounds) {return false;}
  if (a.x<0 || a.x >= tileBounds) {return false;}
  return true; 
};

proj.getWrapWidth = function(zoom) {
  return 99999999999999;
};

G_NORMAL_MAP.getProjection = function() {return proj;};

Но я до сих пор не нашел решения для v3.* РЕДАКТИРОВАТЬ Чтобы уточнить: я не ищу способ предотвратить панорамирование (перемещение в сторону), а способ предотвратить повторение карты самостоятельно, особеннопри низких уровнях масштабирования

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Ознакомьтесь с двумя ответами на Как ограничить панорамирование в Google maps API V3? . Техника, изложенная там, должна помочь вам (в зависимости от вашего варианта использования) пройти большую часть пути или, возможно, полностью.

Эти ответы не показывают, как ограничить обтекание, но они показывают, как ограничить панорамирование. Если вы можете принять другие меры для ограничения содержимого исходного окна просмотра (например, если у вас есть контроль над размером и вы можете соответствующим образом ограничить уровни масштабирования и исходные координаты), то ограничение панорамирования может привести вас туда.

0 голосов
/ 01 ноября 2011

Таким образом можно легко предотвратить перенос мира (адаптировано из ответов, связанных с Троттом)

// prevent wrap                                                                                                                                                                                                                                                     
  var lastValid = map.getCenter();
  google.maps.event.addListener(map, 'center_changed', function() {
    if(map.getBounds().getNorthEast().lng() > map.getBounds().getSouthWest().lng()) {
      lastValid = map.getCenter();
    }
    else
      map.panTo(lastValid);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...