我得到了緯度&點的經度。我希望所有的緯度爲&經度的讀數相對於給定的點在500M的半徑內。是什麼方法呢?可能嗎?是他們的任何算法嗎?創建用戶定義地理柵欄的算法
回答
有可用來計算距離的兩個緯度/長點之間(它不會確切由於海拔變化,但非常接近),並從指定點篩選基於距離的樣本點很多公式。
的什麼可用的(數學與和源代碼)一個很好的概述,請訪問:http://www.movable-type.co.uk/scripts/latlong.html
瀏覽過那裏,選擇適合您需求的最佳距離公式。
您鏈接了我最喜歡的網站以解決此問題;和關於高度錯誤的觀點是不錯的... – Floris
這裏是在計算器上的解決方案尋找兩個地點之間的距離,通過烏斯曼庫爾德
https://stackoverflow.com/a/14394403/2128327
有小調整因此,我們可以使用他的功能:
public double getKmDistance(GeoPoint StartP, GeoPoint EndP) {
int Radius=6371;//radius of earth in Km
double lat1 = StartP.getLatitudeE6()/1E6;
double lat2 = EndP.getLatitudeE6()/1E6;
double lon1 = StartP.getLongitudeE6()/1E6;
double lon2 = EndP.getLongitudeE6()/1E6;
double dLat = Math.toRadians(lat2-lat1);
double dLon = Math.toRadians(lon2-lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult= Radius*c;
double km=valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
kmInDec = Integer.valueOf(newFormat.format(km));
meter=valueResult%1000;
meterInDec= Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value",""+valueResult+" KM "+kmInDec+" Meter "+meterInDec);
return kmInDec;
}
再拿說你有一個地點清單:
ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>();
,我們有我們當前的位置:
GeoPoint currentLocation = new GeoPoint(..);
,那麼你可以這樣做:
ArrayList<GeoPoint> within500Km = new ArrayList<GeoPoint>();
for (GeoPoint g : geoPoints)
if (getKmDistance(currentLocation, g) <= 500.0)
within500Km.add(g);
for(GeoPoint g : within500Km)
System.out.println("> "+g.getLatitudeE6()+" : "+g.getLongitudeE6()+" ");
謝謝@khaled我會嘗試嗎? –
@NaVaNeeThPrOdHutuR我的代碼使用500公里,你可以改變它 –
從一個真正的評論的答案更多信息:我在這裏發佈鏈接,因爲鏈接不工作的評論。 https://developer.android.com/training/location/geofencing.html –
- 1. 在不同的用戶上創建地理柵欄
- 2. 如何創建地理柵欄
- 3. 地理柵欄理解地理柵欄一生
- 4. 當應用程序關閉時創建新的地理柵欄
- 5. Android更新地理柵欄
- 6. 實現地理柵欄 - C#
- 7. 如何在android中定義地理柵欄的矩形
- 8. 使用Google玻璃的地理柵欄
- 9. 創建算法未定義用戶算法
- 10. 當前用戶位置上的地理柵欄
- 11. 用於圓形和矩形地理柵欄的C邏輯/算法?
- 12. 地理圍欄算法
- 13. Java中的地理柵欄庫
- 14. woocommerce中的地理柵欄產品
- 15. 一致的Android地理柵欄監測
- 16. Android中路由的地理柵欄
- 17. 地理柵欄:如何識別使用Oracle Spatial重疊地理柵欄邊界的對象(要素)?
- 18. Google地理柵欄 - 繪製矩形
- 19. Android地理柵欄廣播接收器
- 20. 谷歌播放地理柵欄onHandleIntent
- 21. 地理柵欄不能刪除?
- 22. 觸發後刪除地理柵欄
- 23. 地理柵欄API工作燈
- 24. 如何處理此組合柵欄 - 繪製算法?
- 25. Android:創建自定義欄
- 26. Android:爲同一應用程序中的其他用戶測試地理柵欄
- 27. 在Google地圖中處理多個地理柵欄
- 28. 動態地理柵欄和谷歌地圖Android應用程序
- 29. 的Android創建地理圍欄
- 30. 使用兩個Android應用程序的地理柵欄服務
簡短的回答:沒有可用這樣的方法,在目前。 – Kedarnath
爲什麼不使用Geofence api android –
完整的解決方案是在https://developer.android.com/training/location/geofencing.html –