2010-01-29 7 views
11

Comment obtenir les coordonnées d'un point particulier sur une carte dans OpenLayers?Trouver les coordonnées d'un point dans OpenLayers

+0

Voulez-vous dire obtenir les coordonnées du point sur lequel l'utilisateur a cliqué? Ou montrant les coordonnées du curseur lorsque vous le déplacez sur la carte? – amercader

+0

oui, mais je veux obtenir toutes les coordonnées des points marqués précédemment sur la même carte. C'est possible? Je suis en train de mettre en place un système de cartographie de la criminalité. Pour cela, j'ai besoin de cette fonctionnalité. Merci. – cuser

+0

Qu'est-ce que vous entendez par "points marqués précédemment"? Je pense que vous devez être plus précis et décrire le flux d'interaction complet de l'utilisateur, sinon il sera difficile de vous aider. – mloskot

Répondre

33

Gestion des événements de clic sur la carte Click. Voici one de many codes d'échantillons que vous pouvez trouver dans OpenLayers mailing archives de la liste:

map.events.register('click', map, handleMapClick); 

function handleMapClick(e) 
{ 
    var lonlat = map.getLonLatFromViewPortPx(e.xy); 
    // use lonlat 

    // If you are using OpenStreetMap (etc) tiles and want to convert back 
    // to gps coords add the following line :- 
    // lonlat.transform(map.projection,map.displayProjection); 

    // Longitude = lonlat.lon 
    // Latitude = lonlat.lat 
} 
+1

@mloskot Doit être map.getLonLatFromViewPortPx (evt.xy); non? – James

+0

ne fonctionne pas et les liens sont morts. –

+1

@HermannIngjaldsson J'ai corrigé les liens. – mloskot

5
<html> 
<head> 
<script src="http://openlayers.org/api/OpenLayers.js"></script> 
<script type="text/javascript"> 
    function init(){ 
     map = new OpenLayers.Map('map'); 
     base_layer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
     "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'}); 
     map.addLayer(base_layer); 
     map.zoomToMaxExtent(); 
     map.events.register('click', map, handleMapClick); 
    } 

    function handleMapClick(evt) 
    { 
     var lonlat = map.getLonLatFromViewPortPx(evt.xy); 
     // use lonlat 
     alert(lonlat); 
    } 
</script> 
</head> 
<body onload="init()"> 
    Hello Map.<br /> 
<div id="map"></div> 
</body> 
</html> 

@mloskot Votre réponse est grande vous avez eu une erreur avec la variable EVT.

Juste ajouté le balisage html pour en faire une page de travail.

Questions connexes