2011-01-07 13 views
7

que estoy tratando de recrear el comportamiento límite del giro como se demuestra aquí: http://econym.org.uk/gmap/example_range.htmGoogle Maps: Límite Toma panorámica

Por desgracia, se trata de utilizar la versión de la API 2, en lugar de la versión actual 3. Estoy actualización de los comandos a fin de que estén al día, pero creo que podría haber perdido algo, porque no está funcionando:

<html> 
<body> 
<script type="text/javascript" src="http://meyouand.us/scripts/jquery-1.4.4.min.js"></script> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 

// Generate map 
var latlng = new google.maps.LatLng(37.76201, -122.4375); 
var myOptions = { zoom: 12, center: latlng, panControl: false, zoomControl: true, mapTypeControl: false, streetViewControl: false, scrollwheel: true, draggable: true, mapTypeId: google.maps.MapTypeId.TERRAIN }; 
var map = new google.maps.Map(document.getElementById("gmap"), myOptions); 

// Limit panning 

// The allowed region which the whole map must be within 
var southWest = new google.maps.LatLng(37.684, -122.591); 
var northEast = new google.maps.LatLng(37.836, -122.333); 
var allowedBounds = new google.maps.LatLngBounds(southWest, northEast); 

// Double check boundaries, plot points just in case 
var sW = new google.maps.Marker({ 
    position: southWest, 
    map: map, 
    title: "southWest" 
}); 
var nE = new google.maps.Marker({ 
    position: northEast, 
    map: map, 
    title: "northEast" 
}); 

// Add a move listener to restrict the bounds range 
google.maps.event.addListener(map, "dragend", function() { checkBounds(); }); 


// If the map position is out of range, move it back 
function checkBounds() { 
    // Perform the check and return if OK 
    if (allowedBounds.contains(map.getCenter())) { 
    return; 
    } 

    // It's not OK, so find the nearest allowed point and move there 
    var C = map.getCenter(); 
    var X = C.lng(); 
    var Y = C.lat(); 

    var AmaxX = allowedBounds.getNorthEast().lng(); 
    var AmaxY = allowedBounds.getNorthEast().lat(); 
    var AminX = allowedBounds.getSouthWest().lng(); 
    var AminY = allowedBounds.getSouthWest().lat(); 

    if (X < AminX) {X = AminX; alert('hi') } 
    if (X > AmaxX) {X = AmaxX; alert('hi') } 
    if (Y < AminY) {Y = AminY; alert('hi') } 
    if (Y > AmaxY) {Y = AmaxY; alert('hi') } 
    alert ("Restricting "+Y+" "+X); 
    map.setCenter(new LatLng(Y,X)); 
} 

}); 
</script> 
<body> 

<div id="gmap" style="width: 480px; height: 440px;"></div> 

</body> 
</html> 

qué alguien mente prestar otro par de ojos para ver si me he perdido algo? : D

(Hay otro código actualizado de la versión 3 aquí en StackOverflow llamado '¿Cómo limito la panoramización en Google maps API V3?' Sin embargo, ese comportamiento "retrocede" visualmente en lugar de simplemente limitar el movimiento más allá los límites.)

+0

probar este mensaje: http://stackoverflow.com/questions/3818016/google-maps-v3-limit-viewable-area-and-zoom-level –

Respuesta