2010-08-09 24 views
10

Uso OpenLayers y quiero crear otro control de navegación en el lado superior izquierdo. Sé cómo agregar controles, pero esta navegación se agrega por defecto al crear OpenLayers-Map. Así que quiero eliminar ese control, para agregar uno propio. Ya sé que el control predeterminado es OpenLayers.Control.PanZoom.¿Cómo puedo eliminar los controles estándar en un OpenLayers-Map?

Respuesta

19

El objeto de mapa tiene una propiedad llamada controls que es una matriz de objetos OpenLayers.Control. Si esta propiedad no se establece explícitamente, OpenLayers asumirá que desea el conjunto de control predeterminado, incluidos OpenLayers.Control.Navigation(), OpenLayers.Control.PanZoom(), OpenLayers.Control.ArgParser() y OpenLayers.Control.Attribution().

Para eliminar PanZoom o cualquier otro control predeterminado, simplemente configure la matriz de propiedades controls en el momento de construir el objeto Map. Aquí está un ejemplo de código:

var map = new OpenLayers.Map('map', { 
    controls: [ 
     new OpenLayers.Control.Navigation(), 
     new OpenLayers.Control.ArgParser(), 
     new OpenLayers.Control.Attribution() 
    ] 
}); 

aquí es un vivo example.

Tenga en cuenta que estableciendo la propiedad controls que no recibirá Control objetos sean por defecto. Cualquier control que necesite debe agregarse manualmente.

Aquí hay un enlace al source code of the Map object si quiere ver cómo funciona.

+0

Gracias. Funciona :-) – Mnementh

+1

Los controles predeterminados están aquí: http://dev.openlayers.org/docs/files/OpenLayers/Map-js.html#OpenLayers.Map.controls – zod

+0

Para la versión 3: https: // github. com/openlayers/ol3/blob/master/src/ol/map.js y https://github.com/openlayers/ol3/blob/master/src/ol/control/controldefaults.js y http: // openlayers. org/es/v3.9.0/apidoc/ol.control.html # defaults –

3

Hubiera esperado que map.removeControl(OpenLayers.Control.PanZoom) funcionara pero aparentemente no.

+4

Debe pasar una referencia del objeto de control que desea eliminar. Una forma de obtener acceso a la referencia es hacer: map.removeControl (map.controls [x]), donde x es el índice del control que desea eliminar, pero parece que esto no funciona a menos que configure explícitamente los controles. como se muestra en la respuesta aceptada. –

Cuestiones relacionadas