2010-01-29 88 views
11

¿Cómo se pueden obtener las coordenadas de un punto particular en un mapa en OpenLayers?Encontrar coordenadas de un punto en OpenLayers

+0

¿Quiere decir obtener las coordenadas del punto donde hizo clic el usuario? ¿O mostrando las coordenadas del cursor al moverlo sobre el mapa? – amercader

+0

sí, pero quiero obtener todas las coordenadas de los puntos previamente marcados en el mismo mapa. ¿Es posible? Estoy implementando un sistema de mapeo de delitos. Para eso necesito esa funcionalidad. Gracias. – cuser

+0

¿Qué quiere decir con "puntos previamente marcados"? Creo que debes ser más específico y describir el flujo completo de interacción del usuario, de lo contrario será difícil ayudarte. – mloskot

Respuesta

33

Manejar clic evento en el mapa Click manipulador. Aquí es one de many códigos de ejemplo se pueden encontrar en OpenLayers de distribución de archivos de la lista:

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 Debería ser map.getLonLatFromViewPortPx (evt.xy); ¿no? – James

+0

no funciona y los enlaces están muertos. –

+1

@HermannIngjaldsson He reparado los enlaces. – 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 Su respuesta es grande que tenía un error con la variable EVT.

Acabo de añadir el marcado html para que sea una página que funcione.

Cuestiones relacionadas