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