android - 谷歌地图 SphericalUtil 计算偏移

标签 android google-maps

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

North South

east west

最佳答案

目前,您只是使用恒定角度(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/

相关文章:

android - 如何仅使用按钮在默认主页启动器和我的应用程序之间切换?

android - onPause 而不是 onSaveInstanceState

javascript - ArcGIS 简单示例动态渲染标记

android - java.lang.ClassCastException : android. support.v4.app.NoSaveStateFrameLayout 无法转换为 com.google.android.maps.MapView

android - 在 kotlin 上从 this@ 更改名称

java - 如何在 Android 中设置主菜单布局?

android - 将扩展 fragment 添加到 Activity

android - 在android中的两个不同位置之间每10米获取纬度,经度点

javascript - 将 Facebook 响应从一个 js 文件传输到另一个文件的最佳方法

javascript - 有没有办法在 google API URL 之外调用 google initMap 回调函数?