2017-08-03 61 views
0

我試圖檢查用戶是否處於結束位置(經緯度對象)的邊界,即使當前位置=結束位置,contains函數總是返回false。所有座標都正確更新。我是否錯誤地使用了LatLngBounds?任何想法如何解決它或使用界限的替代?LatLng Bounds contains()總是返回false

protected void changeStep() throws JSONException { 

    Log.i(TAG, " =========== changeStep ========= "); 

    int i = 0; 
    while (i < routes.size()) { 

     //coordinates for end location 
     Double latEndLoc = routes.get(i).endLocation.lat; 
     Double lngEndLoc = routes.get(i).endLocation.lng; 
     LatLng endLoc = new LatLng(latEndLoc,lngEndLoc); 

     //setting bounds for end location 
     LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
     builder.include(endLoc); 
     LatLngBounds bounds = builder.build(); 

     Log.i("endLoc", endLoc.toString()); 
     Log.i("bounds center", bounds.getCenter().toString()); 
     Log.i("currentLoc", currentLocation.toString()); 


     //checking if users current location is within bounds of end location 
      if (bounds.contains(currentLocation)) { 

       Log.i(TAG, " =========== enteredIfBranch ========= "); 

       setText(i + 1); 
       return; 

      } 


     i++; 

    } 

} 
+0

除了這個事實,你不能做任何事情,同積1分,你怎麼確定你考慮終點的「界限」?你至少需要2分 – tyczj

回答

1

至少需要兩個位置。

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
    builder.include(somewhere); 
    builder.include(endLoc); 
    LatLngBounds bounds = builder.build(); 
+0

無論如何要建立一個位置的邊界?或從一個位置獲得兩點? –

+0

@SaritMafouda,甚至沒有意義你剛剛問了什麼。這聽起來像你正在嘗試創建一些geofence,所以也許你應該看看geofence api https://developer.android.com/training/location/geofencing.html – tyczj

+0

我應該澄清我的問題。我正在創建一個導航應用程序,並且一旦用戶到達特定位置,我正嘗試切換到下一個方向步驟。但是,我希望位置具有半徑/範圍,因爲用戶不總是處於確切的拉伸點。看起來geofence可能是我需要的。 –

0
builder.include(endLoc); 

這應該是 「包括()」:

builder.including(endLoc);