2014-11-23 17 views
7

Tôi có một điểm đánh dấu trên bản đồ Google Maps của tôi trông như thế này:marker Xoay dựa trên chỉ đường lái xe

pic

Khi người dùng đang lái xe, tôi muốn xoay nó dựa trên hướng lái xe của mình. Làm thế nào tôi có thể đạt được điều này? Tôi có lẽ nên sử dụng vị trí trước đó và coords vị trí hiện tại để tính toán, nhưng tôi không có ý tưởng làm thế nào.

+0

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. –

+0

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

Trả lời

25

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.

+0

Cảm ơn, @hunyadym, hoạt động tốt – GrafOrlov

+0

Dựa trên câu trả lời này, làm cách nào để biết mặt trước và mặt bên của xe? –

+0

Nó không biết, nó giả định rằng chiếc xe di chuyển về phía trước (nó sử dụng hai vị trí tuần tự, hướng di chuyển đến điểm sau). – hunyadym

Các vấn đề liên quan