2010-01-29 38 views
11

Làm cách nào để có được tọa độ của một điểm cụ thể trên bản đồ trong OpenLayers?Tìm tọa độ của một điểm trong OpenLayers

+0

Bạn có muốn nhận tọa độ của điểm mà người dùng đã nhấp không? Hoặc hiển thị tọa độ của con trỏ khi di chuyển nó trên bản đồ? – amercader

+0

có, nhưng tôi muốn lấy tất cả tọa độ của các điểm đã đánh dấu trước đó trên cùng một bản đồ. Có thể không? Tôi đang triển khai hệ thống lập bản đồ tội phạm. Tôi cần chức năng đó. cảm ơn. – cuser

+0

Ý của bạn là "điểm được đánh dấu trước đây"? Tôi nghĩ bạn cần phải cụ thể hơn và mô tả luồng tương tác của người dùng hoàn chỉnh, nếu không sẽ rất khó để giúp bạn. – mloskot

Trả lời

33

Xử lý sự kiện nhấp chuột trên bản đồ xử lý Click. Dưới đây là one của many mã mẫu mà bạn có thể tìm thấy trong OpenLayers gửi thư lưu trữ danh sách:

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 Nên là map.getLonLatFromViewPortPx (evt.xy); Không? – James

+0

không hoạt động và các liên kết đã chết. –

+1

@HermannIngjaldsson Tôi đã sửa các liên kết. – 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 câu trả lời của bạn là tuyệt vời mà bạn đã có một sai lầm với biến evt.

Chỉ cần thêm đánh dấu html để làm cho trang đó hoạt động.

Các vấn đề liên quan