我正在使用Google Maps 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);