Tôi đang phát triển một ứng dụng cần xoay mapView với la bàn. Tôi biết cách xoay camera nhưng tôi cần xoay mapView với la bàn. điểm trung tâm nên là vị trí hiện tại. Tôi đã tìm thấy mã cho Maps V1 nhưng tôi cần phải làm điều đó với Maps V2Bản đồ Android v2 xoay bản đồXem với la bàn
Trả lời
OK, tôi đã tự tìm ra. đầu tiên bạn cần tính toán vòng bi từ la bàn. thì có thể xoay camera api-2 của Maps.
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));
}
đặt SensorListener
trong mã của bạn và gọi phương thức này trong sự kiện onSensorChanged
. tôi đã thêm giá trị nghiêng để bản đồ sẽ xoay vòng ở chế độ 3D.
trong đối tượng GoogleMap của bạn, bạn có thể truy cập phương thức getMyLocation. Điều này trả về một đối tượng Location có chứa phương thức getBearing. Cái này trả về một phao [0..360] được tính từ vị trí đã biết cuối cùng và vị trí hiện tại, 0 ° là trục bắc, xoay là trong cảm giác đồng hồ.
Để tiếp tục, bạn có thể sử dụng một mã như:
GoogleMap gMap = .....
float bearing = gMap.getMyLocation().getBearing();
CameraPosition newCamPos = new CameraPosition(latLngObject,
zoomValue,
tiltValue,
bearing);
gMap.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), durationValue, null);
Làm thế nào chúng ta có thể làm điều này trong V3? Xin đề nghị. Ngoài ra tôi đã đăng câu hỏi tương tự để xoay bản đồ 360 độ bằng cách thay đổi vòng bi 3 lần (mỗi lần bằng 120 độ để xoay 1 vòng quanh điểm trung tâm) nhưng có giảm bớt và giật. Làm thế nào tôi có thể tránh điều đó. https://stackoverflow.com/questions/48123738/gmap-bearing-rotation-in-smooth-motion –
Không phải là nó quan trọng quá nhiều, nhưng .bearing là một phao. – Chrispix
Làm thế nào để bạn có được mang? – sealskej
Nếu bạn đang sử dụng GoogleMap thay vì MapView, bạn có thể sử dụng sự kiện mMap.setOnMyLocationChangeListener. –