說我有一個GPS座標說A(在經度 - 緯度小數形式,然後我想創建一個30米半徑(一個圓)的區域,以便我可以捕獲任何設備(與GPS座標),它進入該區域,如何做到這一點感謝如何使用GPS座標創建區域
0
A
回答
2
看看這個JavaScript的例子,但它很容易在任何其他語言來實現
主要代碼:?
var earthRadiusKm = 3437.74677 * 1.1508 * 1.6093470878864446;
function GeoArea(centerLat, centerLng, distanceKm, northPoint, southPoint, eastPoint, westPoint) {
this.northPoint = northPoint;
this.southPoint = southPoint;
this.eastPoint = eastPoint;
this.westPoint = westPoint;
this.inArea = function (lat, lng) {
var inBox = southPoint.lat <= lat && lat <= northPoint.lat && westPoint.lng <= lng && lng <= eastPoint.lng;
if (inBox) {
var distanceFromCenterKm = calcDistance(centerLat, centerLng, lat, lng);
return distanceFromCenterKm <= distanceKm;
} else {
return false;
}
}
}
function GeoPoint(lat, lng) {
this.lat = lat;
this.lng = lng;
}
function toDegrees(radians) {
return radians/(Math.PI/180);
}
function toRadians(degrees) {
return Math.PI/180 * degrees;
}
function calcDistance(latA, lngA, latB, lngB) {
var rLatA = toRadians(latA);
var rLatB = toRadians(latB);
var rHalfDeltaLat = toRadians((latB - latA)/2);
var rHalfDeltaLng = toRadians((lngB - lngA)/2);
return 2 * earthRadiusKm * Math.asin(Math.sqrt(Math.pow(Math.sin(rHalfDeltaLat), 2) + Math.cos(rLatA) * Math.cos(rLatB) * Math.pow(Math.sin(rHalfDeltaLng), 2)));
}
function findPoint(lat, lng, bearing, distance) {
var rLat = toRadians(lat);
var rLng = toRadians(lng);
var rBearing = toRadians(bearing);
var rAngDist = distance/earthRadiusKm;
var rLatB = Math.asin(Math.sin(rLat) * Math.cos(rAngDist) + Math.cos(rLat) * Math.sin(rAngDist) * Math.cos(rBearing));
var rLngB = rLng + Math.atan2(Math.sin(rBearing) * Math.sin(rAngDist) * Math.cos(rLat), Math.cos(rAngDist) - Math.sin(rLat) * Math.sin(rLatB));
var pLat = toDegrees(rLatB);
var pLng = toDegrees(rLngB);
return new GeoPoint(pLat, pLng);
}
function calcArea(lat, lng, distanceKm) {
var northPoint = findPoint(lat, lng, 0, distanceKm);
var eastPoint = findPoint(lat, lng, 90, distanceKm);
var southPoint = findPoint(lat, lng, 180, distanceKm);
var westPoint = findPoint(lat, lng, 270, distanceKm);
return new GeoArea(lat, lng, distanceKm, northPoint, southPoint, eastPoint, westPoint);
}
使用示例:
// calculate area with center in lat:55.742793 lng:37.615401
// and distance in 23 km
var area = calcArea(55.742793, 37.615401, 23);
//returns true
area.inArea(55.714735, 37.629547);
//returns false
area.inArea(55.693842, 38.015442);
+0
看起來不錯 - 我會嘗試 - 非常感謝,我希望它能與30米 – user1379094
+0
是的,它的工作原理。在這種情況下distanceKm參數應該等於0.030 –
+0
對不起Nikita,我嘗試過,但我得到了這麼多的錯誤,我應該在我開始這個代碼之前聲明什麼?你使用哪個Java版本?感謝您的幫助 – user1379094
相關問題
- 1. 將GPS座標映射到區域
- 2. 如何從GPS座標的地圖上顏色區域
- 3. 座標在區域標記
- 4. 增加由GPS座標包圍的區域的大小
- 5. Android Gps座標
- 6. gps座標+米
- 7. QuickTime GPS座標
- 8. 如何檢測GPS座標是否落在MKMapView的某個區域?
- 9. 從GPS座標生成行政區劃?
- 10. 使用GPS座標標記視頻幀
- 11. PDFBox的PDFTextStripperByArea區域座標
- 12. HTML地圖區域座標
- 13. 如何使用座標獲取當前區域名稱?
- 14. 如何使用GPS座標獲取地標?
- 15. 如何獲得iPhone上給定gps座標的時區?
- 16. 如何從gps座標確定房屋/街區號
- 17. 如何根據RAILS中的時區驗證GPS座標
- 18. GPS座標偏差
- 19. 移動GPS座標
- 20. GPS座標精度
- 21. 查詢GPS座標
- 22. 如何使用Cloud Formation創建子域名託管區域
- 23. 幫助使用GPS座標,Android
- 24. iOS:使用GPS檢查座標
- 25. 使用asyncTask獲取GPS座標
- 26. 如何使用GPS座標測量從當前位置到另一個位置的區域android
- 27. 如何從iPhone/Android獲取GPS座標?
- 28. 如何獲取GPS座標多邊形
- 29. 如何設置圖像的GPS座標?
- 30. 如何在FlashBuilder中存儲GPS座標?
咦?這與JavaScript有什麼關係? –
我嘗試了它,它給了33錯誤 - 對不起,請幫助 – user1379094