Bueno al final ya lo he solucionado, aunque de una forma distinta,lo que
he hecho es lo siguiente:
//Registramos el evento de mouseup para el marcador, cuando
alguien lo
haga se disparara la funcion addclose
pois.events.register("mouseup", pois,addclose);
}
function adclose()
{
//esperamos 200ms para que aparezca el popup sino diria que no
existe
map.popups[0]
setTimeout("map.popups[0].addCloseBox()",200);
//Generamos un click en el mapa porque sino queda el mouse atrapado y
cuando se mueve el mouse se mueve el mapa
map.events.triggerEvent("click",{});
}
> Hola,
>
> yo guardo un array de features con los popus, me la he echo yo para
> poder cambiar el texto del popup dinámicamente. Si no no podia saber si
> una feature tenia o no el popup 'abierto' o 'cerrado'.
>
> Salut,
>
> Jaume.
>
> xevi wrote:
> > Ya he consegido cerrar un popup , el problema que tengo es que he
> > probado de cerrarlo con el .hide() o con el .destroy() y a la que le
> > vuelvo a dar la POI no se abre.He buscado en la documentacion si hay
> > alguna forma de recargar los markers o saber a que marker esta asociado
> > el popup para ver si podia dejarlo listo para que volviera a mostrar el
> > popup , pero no he encontrado nada.Ahora mismo los elimino de la
> > siguiernte forma:
> >
> > map.popups[0].destroy();
> > map.popups[0]=null;
> > Y el objeto map lo creo asi:
> > map = new OpenLayers.Map ("map", {
> > controls:[
> > new OpenLayers.Control.Navigation(),
> > new OpenLayers.Control.PanZoomBar(),
> > new OpenLayers.Control.LayerSwitcher(),
> > new OpenLayers.Control.Attribution(),],
> > maxExtent: new OpenLayers.Bounds
> > (-20037508.34,-20037508.34,20037508.34,20037508.34),
> > maxResolution: 156543.0399,
> > numZoomLevels: 19,
> > units: 'm',
> > projection: new OpenLayers.Projection("EPSG:900913"),
> > displayProjection: new OpenLayers.
> > Projection("EPSG:4326")
> > } );
> >
> > Por cierto tienes razon, con un solo popup(almenos en mi caso no me ha
> > hecho falta ningun control)
> >
> > Y muchas gracias por el codigo me ha aclarado un bastante las ideas
> >> Hola,
> >>
> >> es que no te havia puesto el control :P zorry.
> >>
> >> popupControl = new OpenLayers.Control.SelectFeature(trackingLayer, {
> >> onSelect: onFeatureSelect,
> >> onUnselect: onFeatureUnselect,
> >> multiple: true,
> >> clickout: false
> >> });
> >> map.addControl(popupControl);
> >> popupControl.activate();
> >>
> >> Pero me parece que si solo permites tener un popup abierto no hace falta
> >> el control.
> >>
> >> Salut!
> >>
> >> Jaume.
> >>
> >> xevi wrote:
> >>> Muchas gracias por el codigo , pero sigue habiendo algo que no entiendo,
> >>> como
> >>> conecto los eventos de cuando se pulsa encima de los POIs con las
> >>> funciones?
> >>> Salud
> Hola,
>
> jo tienes tantos js, que francamente no se donde buscar. Pero
> bueno, te paso un poco de mi código, yo utilizo un control por que
> permito tener diferentes popups abiertos. Pero te puedes inspirar.
>
> Supongo que en tu caso lo más simple es guardar en una variable global
> el popup y en close destruyes el popup (yo lo guardo en un feature).
>
> Salut!
>
> Jaume.
>
> function onFeatureSelect(feature) {
> var popup = new OpenLayers.Popup.FramedCloud(feature.attributes.did,
> new OpenLayers.LonLat(feature.geometry.x,feature.geometry.y),
> new OpenLayers.Size(200,200),
> feature.attributes.description,
> null,
> true,
> onPopupClose);
> feature.popup = popup;
> map.addPopup(popup);
> popup.updatePosition();
> }
>
> function onFeatureUnselect(feature) {
> map.removePopup(feature.popup);
> feature.popup.destroy();
> feature.popup = null;
> }
>
> function onPopupClose(evt) {
> iSize = rssDevices.length;
> for (var i = 0; i < iSize; i++) {
> if (rssDevicesFeatures[i].popup != null) {
> if (rssDevicesFeatures[i].popup == this) {
> popupControl.unselect(rssDevicesFeatures[i]);
> }
> }
> }
> }
>
> xevi wrote:
> > Hola lista, estoy intentando migrar unos mapad de Google Maps a Mapnik
> > +Google Maps con Openlayers, el problema que tengo es que para importar
> > los puntos de interes uso el OpenLayers.Layer.Tex(), el mapa muestra
> > bien los puntos, no hay ningun problema en este paso , el problema viene
> > de que me gustaria que apareciera un botoncito para cerrar los popups de
> > los POIs, he consegido hacer aparecer un cuadrito para cerrar i que al
> > pulsar encima se ejecute un script de jav