Bonjour
Après avoir développé pas mal d'outils sur l'API Google Maps j'ai du me pencher récemment sur l'API Geoportail.
Mon besoin est assez simple puisqu'il s'agit dans un premier temps d'afficher un tracé à partir d'un fichier KML fourni en WGS84.
J'ai actuellement environ 300 fichiers kml qui s'affichent sans probleme dans la majorité des cas. Mais pour certains de ces fichiers le tracé ne se place pas au bon endroit.
par exemple un tracé qui devrait apparaitre pret d'Angoulème se trouve dans les Pyrénées pret de saint lary soulan.
Je n'arrive pas à trouver d'explication cohérente ou de différence entre les KML qui se chargent au bon endroit et ceux qui ne se chargent pas au bon endroit.
Voici mon code pour le chargement du KML :
kmlLayer=VIEWER.getMap().addLayer(
"KML",
"tracé",
"kl/"+nom,
{
visibility:true,
opacity:1,
projection:"EPSG:4326",
eventListeners:{
"loadend":function(){
if(this.maxExtent){
this.map.zoomToExtent(this.maxExtent);
this.setVisibility(true);
}
}
}
}
Le pire c'est que le code dans le listener "loadend" fonctionne parfaitement. la carte se positionne bien la ou le tracé devrait apparaitre.
Le problème continu lorsque j'essai d'afficher un marqueur sur ce tracé. le marqueur s'affiche au bon endroit lorsque le KML s'affiche au bon endroit. Il part en Afrique quand le KML part dans les pyrénées.
voici le code pour l'affichage du marqueur :
var position = new OpenLayers.Geometry.Point(lon,lat);
var projWGS84=new OpenLayers.Projection("EPSG:4326");
position.transform(projWGS84, VIEWER.projection);
var style = {externalGraphic:'../images/mark.png', graphicWidth:17, graphicHeight:28,graphicYOffset:-28 };
var pt = new OpenLayers.Feature.Vector(position, null, style);
var markLayer = new OpenLayers.Layer.Vector('marqueur');
markLayer.addFeatures([pt]);
VIEWER.getMap().addLayer(markLayer);
Bien entendu j'ai vérifié les KML qui posent probleme sur Geoportail. Ils sont tout à fait conformes. d'ailleurs mon script GoogleMaps pour ces memes KML ne pose aucun probleme.
Quelqu'un pourrait il m'aiguiller? A ce stade je ne vois pas du tout vers ou chercher. J'ai essayé de trafiquer les projections mais ça n'a rien donné.
Partager