2011-02-10 18 views
9

Necesito reorganizar los controles predeterminados en la API de Google Map (v3, 3.4).Cambiar el orden de los controles de Google Map en la misma ubicación (es decir, RIGHT_TOP)

Todo está en su lugar y funciona, pero cuando agrego el MapTypeControl, zoomControl, la streetViewControl y la panControl a la misma ControlPosition (es decir google.maps.ControlPosition.RIGHT_TOP), No puedo definir el orden de cómo se representan.

MapTypeControl tiene un valor predeterminado de TOP_RIGHT, pero cambiando a RIGHT_TOP (el valor por defecto de los otros mencionados anteriormente) de añadirlo a la parte inferior de esta ubicación:

google maps controls

Aquí está el código para las opciones de mapa (no importa la capa de OSM añadido):

var mapOptions = { 
zoom: 12, 
center: def_center, // is set before this snippet  
mapTypeControl: true, 
mapTypeId: user_maptype, // is set before this snippet 
mapTypeControlOptions: { 
    position: google.maps.ControlPosition.RIGHT_TOP, 
    mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN, "openstreetmap"] 
}, 
zoomControl: true, 
zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.DEFAULT, 
    position: google.maps.ControlPosition.RIGHT_TOP 
}, 
streetViewControl: true, 
streetViewControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
}, 
panControl: false, 
panControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
}, 
scaleControl: false, 
scaleControlOptions: { 
     position: google.maps.ControlPosition.BOTTOM_RIGHT 
} 
}; 

que necesitan la MapTypeControl ser el primer correo lement a ser prestado (arriba del streetViewControl). ¿Alguna idea de cómo hacer esto?

+2

¿alguna vez encontró una solución para reordenar esto? Agregué un control personalizado y puedo ponerlo arriba o abajo con el índice 1/0, pero no puedo actualizar el índice de los controles predeterminados (específicamente panControl) – tester

Respuesta

4

Este código funciona bien en el editor de código de Google @http://code.google.com/apis/ajax/playground/#control_position_v3

al final la solución fue usar TOP_RIGHT en lugar de RIGHT_TOP

Además la propiedad index se puede cambiar a través de setAttribute al igual que la mayoría de la otras propiedades.

function initialize() { 
    var mapDiv = document.getElementById('map-canvas'); 
    var map = new google.maps.Map(mapDiv, { 
     center: new google.maps.LatLng(37.4419, -122.1419), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     mapTypeControl: true, 
     mapTypeControlOptions: { 
     position: google.maps.ControlPosition.TOP_RIGHT 
     }, 
     zoomControl: true, 
     zoomControlOptions: { 
     style: google.maps.ZoomControlStyle.DEFAULT, 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     streetViewControl: true, 
     streetViewControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     panControl: false, 
     panControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     scaleControl: false, 
     scaleControlOptions: { 
     position: google.maps.ControlPosition.BOTTOM_RIGHT 
     } 
    }); 
} 
+0

Eso es más o menos el diseño predeterminado. Todavía no puedo obtener mapTypeControl sobre la herramienta de panoramización. Si quisieras dar un ejemplo de eso, sería perfecto. – andychase

+0

Si fue al patio de recreo y pegó el código y presionó ejecutar, debería haber visto la selección del tipo de mapa en la parte superior derecha y estaba sobre todos los demás controles ... ¿qué quiere una captura de pantalla? – Jay

+0

Aunque el truco propuesto por Jay está limitado en posibles aplicaciones (ya que solo puedes establecer el orden dividiendo todos los controles en dos grupos) definitivamente funciona y puede hacer el trabajo :). –

1

Desafortunadamente no tengo una solución lamentablemente pero de acuerdo con esta página Google Map API V3 Controls los controles definidos por el usuario se pueden colocar antes que los predeterminados cambiando su índice en DOM. ¿Podría ser el mismo problema, que el control de zoom tiene un índice más bajo que el control de mapa/satélite?
No estoy seguro de cómo cambiaría el índice, pero podría ser una forma de encontrar una solución.

Ah, y si encuentra la manera de resolverlo, pegue aquí su solución. Podría ser útil.

Cuestiones relacionadas