Comment afficher la position de la souris comme info-bulle dans OpenLayers-2?

10

Je veux des coordonnées de carte comme effet de souris sur OpenLayers. J'utilise le code suivant. Cependant, il affiche les coordonnées des pixels:

    map.events.register("mousemove", map, function(e) {      
      var position = e.map.x + e.xy.y;
      OpenLayers.Util.getElement("tooltip").innerHTML = position 
    });
thelastray
la source
wow 7k vues et seulement 4 votes positifs?
Sous le radar

Réponses:

11

Pour ajouter à la réponse de simo ... voici un exemple:

map.events.register("mousemove", map, function (e) {
    var position = e.map.getLonLatFromViewPortPx(e.xy);
    OpenLayers.Util.getElement("tooltip").innerHTML = "<label>Latitude: " + position.lat + "</label><br/><label>Longitude: " + position.lon + "</label>";
});

Vous devrez peut-être passer de Mercator à Geographic comme je l'ai fait ... si oui:

var position = e.map.getLonLatFromViewPortPx(e.xy).transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
CaptDragon
la source
5

Depuis Openlayers 2.12, l'approche suivante fonctionne pour accéder aux coordonnées du survol:

map.events.register("mousemove", map, function (e) {            
var point = map.getLonLatFromPixel( this.events.getMousePosition(e) )     
    console.log(point.lon, point.lat)
});
djq
la source
1

Dans Openlayers 2.13, vous pouvez le faire comme:

map.addControl(
    new OpenLayers.Control.MousePosition({
        prefix: 'Coords: ',
        separator: ' | ',
        numDigits: 2,
        emptyString: 'Mouse not over map'
    })
);
Arvind07
la source