2009-11-10 10 views
5

Ich arbeite an einer googlemap, die alle gut funktioniert, abgesehen von der Tatsache, dass ich nicht scheinen kann, eine maximale und minimale Zoom (ich möchte die Ebenen auf eine begrenzen ein paar Ebenen in beide Richtungen einer Standard-Zoom-Ansicht)Google Maps, minimale und maximale Schieberegler

Ich habe versucht, mit der map.getMimimumResolution, aber das scheint nicht zu funktionieren - irgendwelche Ideen?

function initialize() { 
    var latlng = new google.maps.LatLng("<%=Html.Encode(Model.Field01.Field01) %>", "<%=Html.Encode(Model.Field01.Field03) %>"); 
    var myOptions = { 
    zoom: 13, 
     center: latlng, 
     disableDefaultUI: false, 
     navigationControl: true, 
     navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN}, 
     navigationControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 

    }; 
    var map = new google.maps.Map(document.getElementById("mapcontainer"), myOptions); 

    map.getMinimumResolution = function() { return 6 }; 

    var marker = new google.maps.Marker({ 
     position: latlng, 
     map: map, 
     title: "<%=Model.AccomName %>" 
     }); 
} 

Alle geschätzt Gedanken, Dank

+0

Welche Sprache einstellen sollte, riecht wie Java –

+0

Sorry, es ist Javascript. Ich bin mir nicht sicher, ob ich nur die richtigen Eigenschaften für die Zoom-Steuerung kennen muss - die Suche in der Google API hat nichts ergeben, was für mich bisher funktioniert. – ivor

+0

hast du es mit Karten v3 api arbeiten? Kannst du die Lösung posten? – Baz1nga

Antwort

1

getMinimumResolution ist eine GMapType Methode, keine GMap2 Methode. so statt dessen:

map.getMinimumResolution = function() { return 6 }; 

Sie können dies tun:

var mt = map.getMapTypes(); 

for (var i=0; i<mt.length; i++) { 
    mt[i].getMinimumResolution = function() {return 6;} 
} 
+0

danke für die Antwort, ich habe es ausprobiert, es scheint nicht zu erkennen, die getMapTypes als eine Funktion obwohl - ich habe nachgeschlagen und wie Sie angelegt haben, sollte es existieren - können Sie sich vorstellen, warum meine Karte nicht erkennt getMapTypes?Ich habe den Code, den Sie angegeben haben, nach der Deklaration des Kartenobjekts – ivor

+0

gelöscht. Verwenden Sie Maps v3 (Labs)? Es ist nicht klar aus Ihren Code-Schnipsel. Ich hatte Maps v2 angenommen, weil es eine maptype.getMinimumResolution-Methode hat, aber wenn Sie map.getMapType nicht erhalten, könnte Ihr Problem sein, dass Sie API v3 wie in einer der anderen Antworten vorgeschlagen verwenden. Hier ist der Code in einer meiner v2 Tutorial Maps funktioniert: http://econym.org.uk/gmap/example_range.htm –

+0

Danke - die Karte wurde mit v3 eingerichtet - Ich werde in diese jetzt arbeiten arbeiten. – ivor

0

Es sieht aus wie Sie die Maps API Version 3 verwenden, die keine Möglichkeit hat, die min und max einstellen Beschlüsse. Noch nicht zumindest.

Sie könnten immer auf Zoomänderungen warten und den Zoom zurücksetzen, wenn er nicht dort ist, wo Sie ihn haben möchten - aber das wäre ziemlich hässlich. :)

2

Wie oben erwähnt, ist der einzige Weg, den ich bisher in V3 gefunden habe, dies mit einem Event Listener zu tun. Hier ist der Code (für maximale Zoomstufe 12 als Beispiel):

google.maps.event.addListener(map, "zoom_changed", function() { 
    if (map.getZoom() > 12) map.setZoom(12); 
}); 

Ja, hässlich und schmutzig und falsch, ich weiß.

0

Versuchen Sie dies. Funktioniert gut für mich

// force normal maps type 
map.setMapType(G_NORMAL_MAP); 

// define minimum and maximum zoom levels 
G_NORMAL_MAP.getMinimumResolution = function() { return 0; } 
G_NORMAL_MAP.getMaximumResolution = function() { return 19; } 
4

Code unten funktioniert reibungslos für mich. Kein Flackern, Störungen, etc. Maps API v3.

var inProcess = false; 

function onZoomChanged() { 
    if (inProcess) return; 

    if (gmap.getZoom() > 16) { 
     inProcess = true; 
     gmap.setZoom(16); 
     inProcess = false; 
     return 
    } 
    else if (gmap.getZoom() < 10) { 
     inProcess = true; 
     gmap.setZoom(10); 
     inProcess = false; 
     return; 
    } 
} 

google.maps.event.addListener(gmap, 'zoom_changed', onZoomChanged); 
17

Es gibt die apposite Konfigurationsparameter :)
Einfaches Beispiel:

<script type="text/javascript"> 
var latlng = new google.maps.LatLng(42.3493337, 13.398172299999942); 
var options = { 
    zoom: 8, 
    minZoom: 6, 
    maxZoom: 10, 
    center: latlng, 
    mapTypeId: google.maps.MapTypeId.TERRAIN 
}; 

map = new google.maps.Map(document.getElementById("map_canvas"), options); 
</script> 

Hier haben Sie die Dokumentation:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions

Glücklich Codierung!

+1

Danke. Dies sollte die akzeptierte Antwort sein. –

0

ich in das gleiche Problem lief

n_customMap.getMinimumResolution = function() { return 5 }; 
n_customMap.getMaximumResolution = function() { return 10 }; 

die für mich gearbeitet

Sie auch die Optionen

minZoom: 5, 
maxZoom: 10 
Verwandte Themen