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

08-04 07:48