Bonjour,
J'ai un souci concernant la récupération de la longitude et latitude sur un vector_layer.
Le principe est de pouvoir dragger ce vector_layer en un autre point que celui d'origine et de récupérer sa nouvelle position en degrés et non en pixels.
Pour cela j'utilise la fonction getLonLatFromViewPortPx mais qui apparement disfonctionne.
Mon code exemple : (En gras les lignes posant problèmes)
Merci de votre aide
function initGeoportalMap() {
geoportalLoadVISU("GeoportalVisuDiv", "normal");
if (VISU) {
VISU.addGeoportalLayers(['ORTHOIMAGERY.ORTHOPHOTOS:WMSC'],{'ORTHOIMAGERY.ORTHOPHOTOS:WMSC':{visibility:true},global:{opacity:1}});
VISU.addGeoportalLayers(['ADMINISTRATIVEUNITS.BOUNDARIES'],{'ADMINISTRATIVEUNITS.BOUNDARIES':{visibility:true},global:{opacity:1}});
}
VISU.getMap().setCenterAtLonLat(2.476026,48.577875);
VISU.openLayersPanel(false);
VISU.openToolsPanel(false);
// On ajoute une couche d'objet vectoriels
var vector_layer = new OpenLayers.Layer.Vector('Mon bien');
var mon_point = new OpenLayers.Geometry.Point(2.476026,48.577875);
// On change notre point de projection
var sourceproj = OpenLayers.Projection.CRS84; // WGS84
var destproj = VISU.projection; // Projection Geoportail
mon_point.transform(sourceproj, destproj);
// On cr?e l'objet Vector ? partir de la Geometry pr?c?dente
var stylepoi = {externalGraphic:'images/icon_house.gif',
graphicWidth:33,
graphicHeight:33
};
var mon_poi = new OpenLayers.Feature.Vector(mon_point, null, stylepoi);
// On ajoute notre POI
vector_layer.addFeatures([mon_poi]);
VISU.getMap().addLayer(vector_layer);
VISU.getMap().addLayer(vector_layer);
var drag_feature = new OpenLayers.Control.DragFeature(vector_layer, {onComplete: function(e) {
alert("Vous venez de repositionner votre Bien, Pixels : " + e.geometry.x + ", Latitude : "+e.geometry.y);
document.getElementById("longitude").value = e.geometry.x;
document.getElementById("latitude").value = e.geometry.y;
var lonlat= VISU.getLonLatFromViewPortPx(e.xy);
alert("Position du bien " + lonlat.lon + lonlat.lat);
//position.transform(OpenLayers.Projection.CRS84, VISU.projection);
}});
VISU.getMap().addControl(drag_feature);
drag_feature.activate();
}
Partager