2016-07-07 83 views
2

我想要做的是計算用戶正在查看地圖的圓的半徑。
我寫的解決方案至今如下(這是真的):在Google地圖中計算可見地圖用戶的半徑

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition cameraPosition) { 
      String TAG = AppController.TAG; 
      LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds; 
      LatLng target = cameraPosition.target; 
      LatLng northEast = bounds.northeast; 
      LatLng southEast = bounds.southwest; 
      float[] results1 = new float[1]; 
      float[] results2 = new float[1]; 
      Location.distanceBetween(target.latitude, target.longitude, northEast.latitude, northEast.longitude, results1); 
      Location.distanceBetween(target.latitude, target.longitude, southEast.latitude, southEast.longitude, results2); 
      double distance = results1[0] > results2[0] ? results1[0] : results2[0]; 
      Log.d(TAG, "onCameraChange:" + results1[0] + " " + results2[0]); 
     } 
    }); 

我在這裏面臨着兩個問題:
1 - 首先,爲什麼中部和北部東ISN之間的distane不等於南西?
2-是否有任何內置的方法來實現相同的結果?

回答

0

enter image description here

,你可以從上面的圖看,水平線(緯度)越短越遠,你離赤道獲得。

在屏幕上,地圖被「扭曲」以使地球的曲面變平,從視野的中心以+/-爲相同的經度和緯度。

因此,除非您直接在赤道處進行測量,否則半徑上會有細微的差異。對於小距離來說,這是微不足道的。如果精度不重要,可以嘗試使用較小的半徑(如果要在視圖上繪製一個不會部分隱藏的圓),或者使用較大的半徑(如果要對地點進行計算在該cicle中)。

+0

Tnx for answer,我想你不能回答第二個問題。但接受你的答案。 – Mehrdad