2014-11-17 23 views
12

Tôi tự hỏi, làm thế nào tôi có thể nhận tọa độ của sự kiện nhấp chuột bản đồ là lat, lon?Điểm chuyển đổi thành vĩ độ

Đây là mã của tôi:

map.on('click', function(evt) { 
    var element = popup.getElement(); 
    var coordinate = evt.coordinate; 

    var latLon = ol.proj.transform(coordinate, 'EPSG:3857', 'EPSG:4326'); 

    $(element).popover('destroy'); 
    popup.setPosition(coordinate); 

Thông thường, giá trị toạ độ mang lại cho tôi một mảng vv: [48654,02545, 3265468,45455]

Nhưng tôi cần lat lon vv: ([39,54876 , 32,547821])

Tóm tắt: Tôi cần chuyển đổi epsg: 3857 phối hợp thành epsg: 4326 toạ độ (vĩ độ/lon)

Bất kỳ ý tưởng nào?

+0

gì về map.getEventCoordinate (evt)? – Thibaut

+0

@Thibaut nó cho tôi sth như thế này [3648595.2737768563,4850925.944188948] nhưng tôi có một tính toán dựa trên lat, lon – gokhangokce

Trả lời

29

Nếu xem chiếu bản đồ của bạn là Web Mercator (EPSG: 3857), đó là mặc định, thì sau đây nên làm việc:

map.on('click', function(evt) { 
    var lonlat = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326'); 
    var lon = lonlat[0]; 
    var lat = lonlat[1]; 
    // … 
}); 
+0

tôi giải quyết vấn đề nhưng giải pháp của bạn là chuyên nghiệp hơn. Tôi nghĩ rằng vấn đề gây ra bởi android LogCat, bởi vì tôi coudlnt thấy giá trị của mảng. – gokhangokce

+0

Giải pháp này chỉ hoạt động cho evt.coordinate. Nó không hoạt động đối với một đối tượng icon. Vv: var geometry = feature.getGeometry(); var coord = geometry.getCoordinates(); var lonlat = ol.proj.transform (điều phối, 'EPSG: 3857', 'EPSG: 4326'); var lon = lonlat [0]; var lat = lonlat [1]; trả về Lon-Lat: 0.000026949458523585642 - 0.000053898917059314044 – gokhangokce

+0

Bạn cần cung cấp một ví dụ hoàn chỉnh. – erilem

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