2011-10-26 41 views
56

Tôi có 2 hộp văn bản cho lat và lon khi người dùng nhập một bản ghi mới vào db.API Google Maps 3: Nhận tọa độ từ Nhấp chuột phải

Tôi có bản xem trước trực tiếp của Google Maps hoạt động tuyệt vời, bây giờ những gì tôi muốn làm là thêm sự kiện nhấp chuột phải vào bản đồ điền vào các hộp văn bản lat/lon với điều phối được nhấp.

Điều này có thể thực hiện được không?

Tôi biết cách thêm trình xử lý sự kiện và xem qua tài liệu API nhưng không thấy bất kỳ điều gì thực hiện điều này. Tôi biết bạn có thể làm điều đó trên bản đồ của google trên trang web của họ.

+0

tôi nghĩ rằng tôi tìm thấy một cái gì đó, các fromDivPixelToLatLng được tìm kiếm tốt .. Tôi sẽ thử nghiệm và repost giải pháp nếu nó hoạt động – guyfromfl

Trả lời

151
google.maps.event.addListener(map, "rightclick", function(event) { 
    var lat = event.latLng.lat(); 
    var lng = event.latLng.lng(); 
    // populate yor box/field with lat, lng 
    alert("Lat=" + lat + "; Lng=" + lng); 
}); 
+1

Lol, tôi đã dành gần một nửa ngày viết code, và chỉ kiểm tra lại, xóa nó bởi vì đây là chính xác nó. Cảm ơn!!! – guyfromfl

+0

làm cách nào để bạn có thể nhận được điểm đánh dấu nào? bằng cách lưu trữ chúng trong một mảng? – AndreaCi

+1

Cùng một mã nhưng thay đổi "rightclick" cho "click" làm cho nó hoạt động cho nhấp chuột trái. Bạn cũng có thể xem tất cả sự kiện trực tiếp tại đây: https://developers.google.com/maps/documentation/javascript/events – Seoman

3

Bạn có thể tạo một đối tượng InfoWindow (class documentation here) và đính kèm với nó một handler rightclick sự kiện đó sẽ cư nó với vĩ độ và kinh độ của địa điểm nhấp vào bản đồ.

function initMap() { 
 
    var myOptions = { 
 
     zoom: 6, 
 
     center: new google.maps.LatLng(-33.8688, 151.2093) 
 
    }, 
 
    map = new google.maps.Map(document.getElementById('map-canvas'), myOptions), 
 
    marker = new google.maps.Marker({ 
 
     map: map, 
 
    }), 
 
    infowindow = new google.maps.InfoWindow; 
 
    map.addListener('rightclick', function(e) { 
 
    map.setCenter(e.latLng); 
 
    marker.setPosition(e.latLng); 
 
    infowindow.setContent("Latitude: " + e.latLng.lat() + 
 
     "<br>" + "Longitude: " + e.latLng.lng()); 
 
    infowindow.open(map, marker); 
 
    }); 
 
}
html, 
 
body { 
 
    height: 100%; 
 
} 
 
#map-canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAIPPUQ0PSWMjTsgvIWRRcJv3LGfRzGmnA&callback=initMap" async defer></script> 
 
<div id="map-canvas"></div>

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