2009-11-10 4 views
5

Pracuję nad tagiem googlemap, który działa dobrze, pomijając fakt, że nie mogę ustawić maksymalnego i minimalnego zoomu (chciałbym ograniczyć poziomy do kilka poziomów albo sposób domyślnego widoku powiększenia)Mapy Google, ustawianie suwaków minimum i maksimum

Próbowałem używać map.getMimimumResolution, ale to nie działa - jakieś pomysły?

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 %>" 
     }); 
} 

wszelkie myśli docenione, dzięki

+0

jakim języku, pachnie java –

+0

Niestety, to Javascript. Nie jestem pewien, czy to po prostu muszę znać odpowiednie właściwości dla elementów sterujących powiększaniem - wyszukiwanie w Google Api nie przyniosło niczego, co działa dla mnie tak daleko. – ivor

+0

zrobiłeś to działając z mapami api v3? czy możesz opublikować rozwiązanie? – Baz1nga

Odpowiedz

1

getMinimumResolution jest metoda GMapType, a nie metoda GMap2. więc zamiast tego:

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

Można by to zrobić:

var mt = map.getMapTypes(); 

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

dziękuję za odpowiedź, próbowałem tego, ale nie wydaje się, że getMapTypes jest funkcją - sprawdziłem to i jak już wyłożyłeś, powinno istnieć - czy możesz pomyśleć, dlaczego moja mapa nie rozpoznać getMapTypes?Upuściłem kod, który dostarczyłeś po deklaracji obiektu mapy – ivor

+0

Czy używasz Map v3 (Labs)? Nie wynika to z fragmentów kodu. Założęliśmy się, że Maps v2 ma metodę maptype.getMinimumResolution, ale jeśli nie dostajesz map.getMapType, może to oznaczać, że używasz API v3, co sugeruje jedna z pozostałych odpowiedzi. Oto kod działający na jednej z moich map instruktażowych v2: http://econym.org.uk/gmap/example_range.htm –

+0

Dzięki - mapa została skonfigurowana za pomocą v3 - przyjrzę się, jak zacząć działać. – ivor

0

Wygląda na to, że używasz Maps API w wersji 3, który nie ma sposobu, aby ustawić minimalną i maksymalną uchwały. Jeszcze nie co najmniej.

Zawsze można nasłuchiwać zmian zoomu i resetować zoom, jeśli nie jest tam, gdzie chcesz - ale to byłoby dość brzydkie. :)

2

Jak wspomniano powyżej, jedyny sposób, jaki udało mi się znaleźć w V3, aby to zrobić, to słuchacz wydarzeń. Oto kod (do maksymalnego poziomu powiększenia 12 jako przykład):

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

Tak, brzydkie i brudne, a nie tak, wiem.

0

Spróbuj tego. Działa dobrze dla mnie

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

Poniższy kod działa sprawnie dla mnie. Bez migotania, trzasków itp. 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

Jest parametr konfiguracyjny trafny :)
Prosty przykład:

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

Tu masz dokumentację:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions

Szczęśliwy kodowania!

+1

Dzięki. To powinna być zaakceptowana odpowiedź. –

0

wpadłem na ten sam problem

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

że pracował dla mnie

należy również ustawić opcje do

minZoom: 5, 
maxZoom: 10