我在地图上创建多边形
getMap().addPolygon(
getPolygonOptions(point1, point2, widthInMeters)
.fillColor(Color.YELLOW));
角落的位置由以下公式计算:
public static PolygonOptions getPolygonOptions(LatLng point1, LatLng point2, double widthInMeters) {
double distance = SphericalUtil.computeDistanceBetween(point1, point2) + 6;
float bearing = location.getBearing();
double bears = bearing;
LatLng corner1 = SphericalUtil.computeOffset(point2, widthInMeters / 2, bears + 90);
LatLng corner2 = SphericalUtil.computeOffset(point2, widthInMeters / 2, bears - 90);
LatLng corner3 = SphericalUtil.computeOffset(corner2, distance, bears);
LatLng corner4 = SphericalUtil.computeOffset(corner1, distance, bears);
return new PolygonOptions().add(corner1, corner2, corner3, corner4);
}
目的是使多边形垂直于轴承。地图上的某些方向的多边形几乎就是这样,但正如您在此图中所看到的,在某些方向上,与当前方位相比,多边形最终倾斜。当前轴承由蓝色箭头和品红色折线表示。任何人都可以确定我的角落计算有什么问题吗?
答案 0 :(得分:0)
可能是从两个功能返回的单位的问题。
此处,SphericalUtil.computeDistanceBetween(point1,point2)返回以米为单位的值。
和
Google的位置文档显示,
location.getBearing()以度为单位返回值。
获得轴承,以度为单位。 轴承是该设备的水平行进方向,与设备方向无关。如果设备有轴承,则保证在(0.0,360.0)范围内。
如果此位置没有方位,则返回0.0。
请在使用location.getBearing()
之前检查位置是否正在承载因此,您已将这些度数转换为米,然后在您的逻辑中实现它。它将解决您的问题。