谷歌地图圆半径替代

时间:2014-03-03 17:45:34

标签: android google-maps google-maps-android-api-2

目前我正在使用圆圈在地图上以米为单位显示特定宽度的对象的路径。这是有问题的,因为在甚至15英里/小时的速率下,必须每隔几百毫秒采用圆形方法,以便圆圈重叠,这样您就不会在圆圈之间产生间隙。一个小时后,你最终得到无数个圆圈,没有记忆。

 CircleOptions circleOptions = new CircleOptions()
        .center(new LatLng(location.getLatitude(), location.getLongitude()));

 circleOptions.radius(radi); // In meters

目前我似乎无法找到谷歌地图android api v2支持使用设置半径以米为单位的折线,但仅限于像素宽度。随着不同的缩放级别和屏幕条件以及地图的投影,这听起来相当复杂,基本上用折线突出显示地图上某个宽度的路径。

有没有人在api中看到过使用圆弧半径方法的替代方法?

1 个答案:

答案 0 :(得分:1)

使用android-maps-utils这变得相对简单:

public static PolygonOptions getPolygonOptions(LatLng point1, LatLng point2, float widthInMeters) {

    double heading = SphericalUtil.computeHeading(point1, point2);
    double distance = SphericalUtil.computeDistanceBetween(point1, point2);

    LatLng corner1 = SphericalUtil.computeOffset(point2, widthInMeters / 2, heading + 90);
    LatLng corner2 = SphericalUtil.computeOffset(point2, widthInMeters / 2, heading - 90);
    LatLng corner3 = SphericalUtil.computeOffset(corner2, distance, heading + 180);
    LatLng corner4 = SphericalUtil.computeOffset(corner3, widthInMeters, heading + 90);

    return new PolygonOptions().add(corner1, corner2, corner3, corner4);
}

然后添加连接点的多边形:

map.addPolygon(
        getPolygonOptions(point1, point2, 50)
                .fillColor(Color.BLACK)
);
map.addPolygon(
        getPolygonOptions(point2, point3, 50)
                .fillColor(Color.BLACK)
);