2011-01-07 116 views
7

gezdirme Limiti: http://econym.org.uk/gmap/example_range.htmGoogle Maps: Burada gösterildiği gibi tava sınırı davranışını yeniden çalışıyorum

Ne yazık ki, API sürüm 2 kullanıyor yerine geçerli sürümü, 3. Ben komutları güncelliyorum böylece onlar geçerli olmakla birlikte, işe yaramıyor çünkü ben bir şey kaçırmış olabileceğini düşünüyorum:

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

Acaba ben bir şey kaçırmış olmadığını görmek için gözlerin başka bir set ödünç birisi olan? : D

(Burada, Google harita API V3'de kaydırma özelliğini nasıl sınırlandırırım?) Adlı StackOverflow üzerinde başka bir güncel sürüm 3 kodu var. Ancak, bu davranış, hareketi yalnızca ötesine sınırlamak yerine görsel olarak "geri çekiliyor". Sınırlar 0)

+0

Bu yayını deneyin: Bu güvenli bir yöntem http://stackoverflow.com/questions/3818016/google-maps-v3-limit-viewable-area-and-zoom-level –

cevap