2015-06-08 17 views
0

我想計算後臺中的地理柵欄違規和駕駛距離計算。這是我第一次使用google API。我在網上找到的所有內容都適用於Android。有沒有特定於常規計算的API?是否有任何API用於計算Geofence違反除Android API之外

+0

你的問題有點含糊。你想要一個服務器端應用程序來檢測一個設備是否會出現一個geofence? – gfelisberto

+1

是的。這是正確的。我會得到拉特朗的位置,並基於我將計算距離。我想知道這個人是否在geofence中,並且基於哪個我會更新我的數據庫。 – ZZzzZZzz

回答

4

你可以自己實現,而無需使用任何框架,它很容易...

我認爲您要檢查,如果你是一個圓形地理圍欄與否內部。

要做到這一點,只需計算圓心和你的位置(經度,緯度)之間的距離。如果距離小於你的圓弧半徑,那麼你在地理圍欄內,否則你不在地理圍欄內。

像這樣:

boolean checkInside(Circle circle, double longitude, double latitude) { 
     return calculateDistance(
      circle.getLongitude(), circle.getLatitude(), longitude, latitude 
     ) < circle.getRadius();} 

要計算兩個點之間的距離,您可以使用此:

double calculateDistance(
    double longitude1, double latitude1, 
    double longitude2, double latitude2) { 
    double c = 
     Math.sin(Math.toRadians(latitude1)) * 
     Math.sin(Math.toRadians(latitude2)) + 
      Math.cos(Math.toRadians(latitude1)) * 
      Math.cos(Math.toRadians(latitude2)) * 
      Math.cos(Math.toRadians(longitude2) - 
       Math.toRadians(longitude1)); 
    c = c > 0 ? Math.min(1, c) : Math.max(-1, c); 
    return 3959 * 1.609 * 1000 * Math.acos(c); 
} 

這個公式被稱爲半正矢公式。 它考慮到了地球的曲折。 結果以米爲單位。

我也說明它在我的博客:

+0

嗨!歡迎。實際上不建議使用僅鏈接的答案。考慮在答案中發佈足夠的信息以使答案自成一體(不依賴於鏈接),或者將鏈接發佈爲對問題的評論,而不是(一旦你獲得了50的聲望,你就可以做到這一點) – JSBach

+1

謝謝:-)我已經給答案添加了一個例子。 –