Nếu bạn sử dụng GPS để định vị người dùng thì đối tượng Location
bạn nhận được trong onLocationChanged
chứa số bearing.
Nếu bạn chỉ có hai tọa độ (ví dụ như bạn chỉ có tọa độ từ nhà cung cấp vị trí mạng), bạn có thể sử dụng Location.bearingTo()
để tính toán chịu lực của hai tọa độ:
Location prevLoc = ... ;
Location newLoc = ... ;
float bearing = prevLoc.bearingTo(newLoc) ;
Nếu bạn có một ảnh hưởng, bạn có thể thiết lập các vòng quay của marker sử dụng MarkerOptions.rotation()
:
mMap.addMarker(new MarkerOptions()
.position(markerLatLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
.anchor(0.5f, 0.5f)
.rotation(bearing)
.flat(true));
bạn cần phải thiết lập các anchor đến điểm bạn muốn xoay xung quanh, và nó cũng là điểm mà bạn muốn được ở vị trí mà bạn thiết lập để đánh dấu. (0.5, 0.5) là trung tâm của hình ảnh.
Bạn rõ ràng biết cách tìm vị trí. Trước khi vòng lặp đầu tiên đặt vị trí trước đó giống như hiện tại. Sau đó vòng lặp của bạn liên tục tính toán khoảng cách giữa vị trí trước đó và vị trí hiện tại và khi nó đủ lớn để quan trọng, hướng với thứ gì đó như 'atan2 (dy, dx)' tại điểm bạn đặt hướng đánh dấu, sau đó nhớ 'trước = = current' và thực hiện một vòng lặp khác. –
Tại sao bạn không sử dụng 'mang' của đối tượng' Vị trí'? Bạn có thể đặt nó vào 'CameraPosition'. – rom4ek