如何将标记旋转到另一个点(位置)?

时间:2014-10-22 22:01:05

标签: rotation maps marker

我基本上想知道如何计算并将标记旋转到另一个位置点(Lat& Lng)。

这是使用适用于Android的Google Maps API v2。

1 个答案:

答案 0 :(得分:1)

为标记使用自定义位图,并在创建位图描述符并显示标记之前使用矩阵进行旋转。

的值为90,270,但类似的东西应该对你有效。

Matrix matrix = new Matrix();
matrix.postRotate(orientation); // anti-clockwise
Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0,
bm.getWidth(),  bm.getHeight(), matrix, true);
bm = rotatedBitmap.copy(rotatedBitmap.getConfig(), true);

BitmapDescriptor bd = BitmapDescriptorFactory.fromBitmap(bm);

markeroptions.icon(bd);

这是来自github上的google map utils

https://github.com/googlemaps/android-maps-utils

/**
 * Returns the heading from one LatLng to another LatLng. Headings are
 * expressed in degrees clockwise from North within the range [-180,180).
 * @return The heading in degrees clockwise from north.
 */
public static double computeHeading(LatLng from, LatLng to) {
    // http://williams.best.vwh.net/avform.htm#Crs
    double fromLat = toRadians(from.latitude);
    double fromLng = toRadians(from.longitude);
    double toLat = toRadians(to.latitude);
    double toLng = toRadians(to.longitude);
    double dLng = toLng - fromLng;
    double heading = atan2(
            sin(dLng) * cos(toLat),
            cos(fromLat) * sin(toLat) - sin(fromLat) * cos(toLat) * cos(dLng));
    return wrap(toDegrees(heading), -180, 180);
}