9

我正在開發一個應用程序,需要使用指南針來旋轉mapView。我知道如何旋轉相機,但我需要用指南針旋轉mapView。中心點應該是當前位置。我發現了地圖V1的代碼,但我需要使用地圖V2來做到這一點。Android Maps v2使用指南針旋轉mapView

回答

18

好的,我想出了自己。首先你需要計算指南針的方位。 然後可以旋轉Maps api-2相機。

public void updateCamera(float bearing) { 
      CameraPosition currentPlace = new CameraPosition.Builder() 
        .target(new LatLng(centerLatitude, centerLongitude)) 
        .bearing(bearing).tilt(65.5f).zoom(18f).build(); 
      googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(currentPlace)); 

    } 

在代碼中設置SensorListeneronSensorChanged事件調用此方法。我已經添加了傾斜值,因此地圖將以3D形式旋轉。

+0

這不是問題太多,但.bearing是一個浮動。 – Chrispix

+4

你如何得到方位? – sealskej

+0

如果您使用GoogleMap而不是MapView,則可以使用mMap.setOnMyLocationChangeListener事件。 –

2

在你的GoogleMap對象中你可以訪問getMyLocation方法。這最後返回一個包含getBearing方法的Location對象。這個返回一個從最後一個已知位置和當前位置計算得到的float [0..360],0°是北軸,旋轉位於時鐘sens中。

要繼續,你可以使用如下代碼:

GoogleMap gMap = ..... 
float bearing = gMap.getMyLocation().getBearing(); 
CameraPosition newCamPos = new CameraPosition(latLngObject, 
      zoomValue, 
      tiltValue, 
      bearing); 
gMap.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), durationValue, null); 
+0

我們如何在V3中做到這一點?請建議。 我也發佈了類似的問題,以便通過更換軸承3次(每次120度旋轉1個週期圍繞一箇中心點)來旋轉地圖360度,但有緩動和顛簸。我怎樣才能避免這一點。 https://stackoverflow.com/questions/48123738/gmap-bearing-rotation-in-smooth-motion –