2011-04-12 13 views
5

Actualmente estoy migrando de v2 a v3. El mundo no debe repetirse longitudinalmente.Prevenir el ajuste mundial en GMap v3

En v2 esto podría ser archivado con algo como esto:

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;}; 

Pero todavía tengo que encontrar una solución para v3.

EDIT Para aclarar un poco: no estoy buscando una forma de evitar la panorámica (navegación lateral) sino una forma de evitar que el mapa se repita, especialmente. en niveles de zoom bajos

Respuesta

2

Consulte las dos respuestas en How do I limit panning in Google maps API V3?. La técnica descrita allí debe atraparlo (dependiendo de su caso de uso) la mayor parte del camino o quizás todo el camino hasta allí.

Esas respuestas no muestran cómo limitar la envoltura, pero muestran cómo limitar la panoramización. Si puede tomar otras medidas para restringir lo que está en la ventana gráfica inicial (por ejemplo, si tiene control sobre el tamaño y puede restringir los niveles de zoom y las coordenadas iniciales de forma apropiada), limitar el barrido puede llevarlo hasta allí.

+0

Es por eso que escribí "dependiendo de su caso de uso" y "la mayor parte del camino". Si puede tomar otras medidas para restringir lo que está en la ventana gráfica inicial, por ejemplo, si tiene control sobre el tamaño y puede restringir los niveles de zoom y las coordenadas iniciales de manera apropiada, entonces la limitación (no la prevención) de la panorámica le puede llevar hasta allí. – Trott

-1

envoltura Mundial se puede prevenir fácilmente de esta manera (adaptado de las respuestas vinculadas por Trott)

// 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); 
    }); 
+1

Esto solo evita la panoramización, no la envoltura. – Mene