Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 24 April 2008 12:39

slim
Juste Inscrit !
Date d'inscription: 22 Apr 2008
Messages: 3

[OpenLayers] Problèpme Ajout et Suppression de Marker

Bonjour !!

J'utilise OpenLayers pour construire un portail contenant une carte.

Dans la fonction init(), j'initialise ma carte et mes layers dont un layer "Markers".
Quand je teste, la carte s'affiche sans problème avec tous les layers initialisés (dont "Markers")

Maintenant, je voudrais ajouter une fonction ayant une longitude et une latitude en paramètres.
lonLatToMercator() est simplement une fonction qui me transforme lonlat en lonlat mercator. Elle fonctionne sans probleme.

Code:

add(evLongitude, evLatitude) {
           var point = lonLatToMercator(new OpenLayers.LonLat(evLongitude,evLatitude))
            var url = 'images/icones/AK30.gif'; 
            var sz = new OpenLayers.Size(10, 17); 
            var calculateOffset = function(size) { 
                                return new OpenLayers.Pixel(-(size.w/2), -size.h); 
                             };            
            var icon = new OpenLayers.Icon(url, sz, null, calculateOffset); 
            marker = new OpenLayers.Marker(point, icon); 
            markers.addMarker(marker);             
            map.setCenter(initLonLat, zoom); 
}

J'ai une erreur dans le débogeur qui me dit que markers n'a pas de propriétés. En effet, quand j'ecris "markers" dans la fonction add(), l'editeur ne me propose pas de propriétés ni de methodes de markers. Alors que dans la fonction init() si !

Voici ma fonction init() :

Code:

function init() 
        {
            var httpRequest = false;
            if (window.XMLHttpRequest) { // Mozilla, Safari, ...
                httpRequest = new XMLHttpRequest();
            }
            else if (window.ActiveXObject) { // IE
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }            
            
            initLonLat = lonLatToMercator(new OpenLayers.LonLat(lon, lat));
            
            map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                      maxResolution:156543.0399, units:'meters', projection: "EPSG:900913"} );
            layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
            map.setCenter (initLonLat, zoom);
              map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
              map.addControl(new OpenLayers.Control.LayerSwitcher());
              

            layer1 = new OpenLayers.Layer.WMS(
            "Layer 1", "http://domaine/geoserver/wms",
            {
                width: '700',
                height: '600',
                layers: 'layers:nomLayer',
                srs: 'EPSG:900913',
                transparent: true,
                format: 'image/png'
            },
            {singleTile: true, ratio: 1} );

                
            map.addLayers([layerTilesAtHome, Layer1]); 
                
            markers = new OpenLayers.Layer.Markers("Markers", 
            {
                srs: 'EPSG:900913', 
                transparent:true,
                format:'image/gif'
            }, 
            {singleTile: true} );
            map.addLayer(markers);    
 
            map.addLayers([layerTilesAtHome, Layer1]); 

            markers = new OpenLayers.Layer.Markers("Markers", 
            {
                srs: 'EPSG:900913', 
                transparent:true,
                format:'image/gif'
            }, 
            {singleTile: true} );
            map.addLayer(markers);    
         
                    
        }

Auriez-vous une idée pour résoudre mon problème ?

Merci beaucoup.

Hors ligne

 

#2 Thu 24 April 2008 13:00

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [OpenLayers] Problèpme Ajout et Suppression de Marker

Bonjour,

Ta variable markers est une variable privée, insert cette ligne :

Code:

var makers;
function init() {
...}

function add(evLongitude, evLatitude) {
...
}

Ta variable deviendra public et pourra être utilisé ailleurs que dans la fonction où elle a été crée.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 24 April 2008 13:16

gde
Participant occasionnel
Date d'inscription: 8 Oct 2007
Messages: 18

Re: [OpenLayers] Problèpme Ajout et Suppression de Marker

Bonjour,

Je n'ai pas regardé en détail tout votre code, mais le "markers" utilisé
dans la fonction init() n'est pas visible en dehors de la cette fonction.
Pour le rendre accessible ailleurs, il faut le déclarer en dehors du corps
de cette fonction en mettant par exemple :

var markers;

juste avant le code

fonction init();

Hors ligne

 

#4 Thu 24 April 2008 14:29

slim
Juste Inscrit !
Date d'inscription: 22 Apr 2008
Messages: 3

Re: [OpenLayers] Problèpme Ajout et Suppression de Marker

Salut !

merci pour les réponses.

Ma variable markers est bien globale. Elle est déclarée avant toutes les fonctions...
Pourtant, quand je veux l'utiliser dans la fonction add, on dirait qu'elle n'est pas initialisée.
De même pour la variable "map". Elles sont toutes les deux déclarées en dehors des fonctions et initialisées dans init().

Hors ligne

 

#5 Thu 24 April 2008 18:21

gde
Participant occasionnel
Date d'inscription: 8 Oct 2007
Messages: 18

Re: [OpenLayers] Problèpme Ajout et Suppression de Marker

Salut,

Pourquoi le layer markers est initialisé 2x dans init ?

Sinon, c'est peut-être une faute d'orthographe dans la déclaration de la
variable globale !

Hors ligne

 

#6 Fri 25 April 2008 09:11

slim
Juste Inscrit !
Date d'inscription: 22 Apr 2008
Messages: 3

Re: [OpenLayers] Problèpme Ajout et Suppression de Marker

gde a écrit:

Pourquoi le layer markers est initialisé 2x dans init ?
Sinon, c'est peut-être une faute d'orthographe dans la déclaration de la
variable globale !


Effectivement, j'ai supprimé la deuxième initialisation. Mais j'ai toujours le même problème...
Je sais pas pourquoi. J'ai bien :

Code:

var map, markers;

function init()
{
    map = .... ; 
    markers = ..... ;
}

function add() 
{
    ....
}

On dirait que dans add(), il ne prend pas en compte l'initialisation des variables dans init().... c'est bizarre.

Merci.

Hors ligne

 

Pied de page des forums

Powered by FluxBB