2009-11-10 4 views
5

Je travaille sur un googlemap, ce qui fonctionne très bien, mis à part le fait que je n'arrive pas à définir un zoom max et min (je voudrais limiter les niveaux à un J'ai essayé d'utiliser map.getMimimumResolution, mais cela ne semble pas fonctionner - des idées?Google maps, réglage des contrôles de curseur minimum et maximum

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

Toutes les pensées appréciées, Merci

+0

Quelle langue, odeurs comme java –

+0

Désolé, il est Javascript. Je ne suis pas sûr si c'est juste que j'ai besoin de connaître les bonnes propriétés pour les commandes de zoom - la recherche de l'API Google n'a pas montré tout ce qui fonctionne jusqu'à présent pour moi. – ivor

+0

l'avez-vous fait fonctionner avec des cartes v3 api? pouvez-vous poster la solution? – Baz1nga

Répondre

1

getMinimumResolution est une méthode GMapType, pas une méthode GMap2. donc au lieu de ceci:

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

Vous pouvez le faire:

var mt = map.getMapTypes(); 

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

merci pour la réponse, je l'ai essayé, il ne semble pas reconnaître le getMapTypes comme une fonction - j'ai regardé cela et comme vous avez exposé, il devrait exister - pouvez-vous penser à pourquoi ma carte ne serait pas reconnaître getMapTypes?J'ai laissé tomber le code que vous avez fourni après la déclaration de l'objet cartographique – ivor

+0

Utilisez-vous Maps v3 (Labs)? Les extraits de code ne sont pas clairs. J'ai supposé Maps v2 car il a une méthode maptype.getMinimumResolution, mais si vous n'obtenez pas map.getMapType, votre problème pourrait être que vous utilisez l'API v3 comme suggéré dans l'une des autres réponses. Voici le code qui fonctionne dans l'une de mes cartes didacticiels v2: http://econym.org.uk/gmap/example_range.htm –

+0

Merci - la carte a été configurée avec v3 - je vais essayer de les faire fonctionner maintenant. – ivor

0

On dirait que vous utilisez l'API Maps Version 3, qui ne dispose pas d'un moyen de régler le min et max résolutions. Pas encore au moins.

Vous pouvez toujours écouter les changements de zoom et réinitialiser le zoom si ce n'est pas où vous voulez qu'il soit - mais ce serait très moche. :)

2

Comme mentionné ci-dessus, la seule façon que j'ai trouvé jusqu'ici dans V3 pour faire ceci est avec un écouteur d'événement. Voici le code (pour le niveau de zoom maximum 12 par exemple):

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

Oui, laid et sale et mal, je sais.

0

Essayez ceci. Fonctionne très bien pour moi

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

Le code ci-dessous fonctionne bien pour moi. Pas de scintillement, de problèmes, 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

Il y a le paramètre de configuration :)
pertinente Exemple simple:

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

Ici vous avez la documentation:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions

Bonne programmation!

+1

Merci. Cela devrait être la réponse acceptée. –

0

je suis tombé sur le même problème

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

qui a travaillé pour moi

vous devez également définir les options pour

minZoom: 5, 
maxZoom: 10 
Questions connexes