我正在使用 Google map Android 库中 SpericalUtil 中的computeOffset()。 computeOffset 接受参数:
public static LatLng computeOffset(LatLng from, double distance, double heading)
使用前两个标记的原始坐标,我可以在输入距离和航向后使用computeOffset生成另一条线。我的目标是使平行线相距一定距离。但正如您在下面看到的,当线条接近南北时,它看起来相当不错,但是当您向东和向西移动时,在我看来,两条线之间的距离不是相同的值。端点的距离似乎正确,但存在偏移。我怎样才能使所有线条看起来像第一张图像,无论方向如何?
public void onMarkerDragEnd(Marker marker) {
showDistance();
LatLng markerCPosition = SphericalUtil.computeOffset(mMarkerA.getPosition(), 50, 90);
mMarkerC = getMap().addMarker(new MarkerOptions().position(markerCPosition).draggable(true).visible(false));
LatLng markerDPosition = SphericalUtil.computeOffset(mMarkerB.getPosition(), 50, 90);
mMarkerD = getMap().addMarker(new MarkerOptions().position(markerDPosition).draggable(true).visible(false));
updatePolyline();
}
最佳答案
目前,您只是使用恒定角度(90 度)向侧面移动点。如果我理解正确,并且您希望两条线彼此平行并间隔一定距离,则需要考虑原始 A-B 线的方向,如下所示:
double heading = SphericalUtil.computeHeading(posA, posB);
LatLng markerCPosition = SphericalUtil.computeOffset(posA, 50, heading + 90);
LatLng markerDPosition = SphericalUtil.computeOffset(posB, 50, heading + 90);
关于android - 谷歌地图 SphericalUtil 计算偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207553/