Rotate marker based on driving direction

前端 未结 1 821
不知归路
不知归路 2021-02-07 18:09

I have a marker in my Google Maps map that looks like this:

\"pic\"

When the user is driving, I want to rot

1条回答
  •  太阳男子
    2021-02-07 18:59

    If you use GPS for locating the user then the Location object you get in onLocationChanged contains the bearing.

    If you only have the two coordinates (e.g. you only have coordinates from network location provider), you can use Location.bearingTo() to calculate the bearing of two coordinates:

    Location prevLoc = ... ;
    Location newLoc = ... ;
    float bearing = prevLoc.bearingTo(newLoc) ;
    

    If you have a bearing, you can set the rotation of the marker using MarkerOptions.rotation():

    mMap.addMarker(new MarkerOptions()
                        .position(markerLatLng)
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker))
                        .anchor(0.5f, 0.5f)
                        .rotation(bearing)
                        .flat(true));
    

    You have to set the anchor to the point you want to rotate around, and it's also the point you want to be at the position you set to the marker. (0.5, 0.5) is the center of the image.

    0 讨论(0)
提交回复
热议问题