2009-11-10 28 views
5

Estoy trabajando en un googlemap, que funciona bien, aparte del hecho de que parece que no puedo establecer un zoom máximo y mínimo (me gustaría limitar los niveles a un un par de niveles en ambos sentidos de una vista de zoom predeterminada)Google maps, configuración de los controles deslizantes mínimos y máximos

He intentado utilizar el map.getMimimumResolution, pero parece que esto no funciona - ¿Alguna idea?

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

Cualquier pensamientos apreciados, Gracias

+0

que el lenguaje, huele a java –

+0

Lo siento, es Javascript. No estoy seguro de si solo necesito saber las propiedades correctas para los controles de zoom: al buscar en la API de Google no encontré nada que funcione hasta ahora para mí. – ivor

+0

¿Lo consiguió trabajando con maps v3 api? ¿puedes publicar la solución? – Baz1nga

Respuesta

1

getMinimumResolution es un método GMapType, no es un método GMap2. así que en vez de ello:

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

usted puede hacer esto:

var mt = map.getMapTypes(); 

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

gracias por la respuesta, lo he probado, aunque parece que no reconoce los getMapTypes como una función. Lo he buscado y, como ha expuesto, debería existir, ¿puede pensar por qué mi mapa no funcionaría? reconocer getMapTypes?He soltado el código que suministró después de la declaración del objeto de mapa – ivor

+0

¿Está utilizando Maps v3 (Labs)? No está claro a partir de los fragmentos de código. Supuse Maps v2 porque tiene un método maptype.getMinimumResolution, pero si no está obteniendo map.getMapType, su problema podría ser que está utilizando API v3 como se sugiere en una de las otras respuestas. Aquí está el código de trabajo en uno de mis mapas de tutoriales v2: http://econym.org.uk/gmap/example_range.htm –

+0

Gracias - el mapa fue configurado con v3 - Voy a ver cómo funcionan ahora. – ivor

0

Parece que estás utilizando la versión 3 de Google Maps API, que no tiene una forma de establecer los valores mínimo y máximo resoluciones. Aún no al menos.

Siempre puede escuchar los cambios de zoom y reiniciar el zoom si no está donde usted quiere, pero sería bastante feo. :)

2

Como se mencionó anteriormente, la única forma que he encontrado hasta ahora en V3 para hacer esto es con un detector de eventos. Aquí está el código (para el nivel de zoom máximo 12 como ejemplo):

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

Sí, feo y sucio y el mal, lo sé.

0

Pruebe esto. Funciona bien para mí

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

El siguiente código funciona sin problemas para mí. Sin parpadeos, fallas, 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

Ahí está el parámetro de configuración apropiado :)
ejemplo 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> 

Aquí tienes la documentación:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions

de codificación feliz!

+1

Gracias. Esta debería ser la respuesta aceptada. –

0

me encontré con el mismo problema

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

que trabajó para mí

también debe configurar las opciones para

minZoom: 5, 
maxZoom: 10 
Cuestiones relacionadas