当前位置: 首页 > 知识库问答 >
问题:

我如何在Android中计算谷歌地图v2上到折线点的当前距离?

董高洁
2023-03-14

共有1个答案

司寇嘉茂
2023-03-14

我用这种方法做标记。假设你有组成折线的点的经纬度,这应该是:

public class MapUtils {

public static float distBetween(LatLng pos1, LatLng pos2) {
    return distBetween(pos1.latitude, pos1.longitude, pos2.latitude,
            pos2.longitude);
}

/** distance in meters **/
public static float distBetween(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2 - lat1);
    double dLng = Math.toRadians(lng2 - lng1);
    double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
            + Math.cos(Math.toRadians(lat1))
            * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng / 2)
            * Math.sin(dLng / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double dist = earthRadius * c;

    int meterConversion = 1609;

    return (float) (dist * meterConversion);
}
}

为了确定道路是否在转弯,我会研究向量之间的欧几里得角(x是当前位置,y是折线点)

只需采取您目前的位置和一个拉特LNG从前面的一些距离为此。

Location currentLocation; // obtained somewhere in your code
LatLng polylinePoint; // a point further ahead

double cLat = currentLocation.getLatitude();
double cLon = currentLocation.getLongitude();

double pLat = polylinePoint.latitude;
double pLon = polylinePoint.longitude;

double angle = Math.acos(
        (cLat*pLat+cLon+pLon) / norm(cLat,cLon)*norm(pLat,cLon));

private double norm(double x, double y) {
    return Math.sqrt(Math.pow(x, 2)*Math.pow(y, 2));    
}
 类似资料:
  • 我有一些谷歌地图折线。我试图在它们周围画两条折线,这样它们就形成了某种边界: 所以对于原始折线的每一个点,我计算边界线点,从原点算起25米: 在这个例子中,让我们省略折线的第一个和最后一个点。所以我总是看上一个点和下一个点,计算中心点的偏移量。

  • 我试图找到android maps api v2的方法,它将决定我在移动时创建的折线的长度。我会把它放在onLocationChanged()中,以便不断更新。有人知道方法是什么吗?maps api将显示哪些单元的长度吗?

  • 我正在尝试用我自己的Google maps V2图标替换蓝点(在地图上显示当前位置)。我在下面试过了,没有成功。 Android Maps API v2更改MyLocation图标 映射V2 myLocation蓝点回调 在Google Map API v2中禁用MyLocation中的中心按钮 以下不起作用

  • 我有一个(由Google Maps Android API v2提供),我试图实现的应该足够简单,就是简单地绘制一条弯曲的。 具体地说,我有一个s数组,我不想让它们以锐角连接,而是想让路线很好地圆滑,这样穿过点的线会沿着曲线,而不是直线和锐角。 现在,在旧的Google Maps API中,可以通过创建自定义的,覆盖,然后手动绘制到地图上(例如,使用自定义的和,以及所需的设置)。 不幸的是,在v2

  • 问题内容: 您如何计算Google Maps V3中两个标记之间的距离?(类似于inV2中的功能。) 谢谢.. 问题答案: 如果要自己计算,可以使用Haversine公式:

  • 我正在尝试建立地图应用程序和遵循这个链接一步一步。我在这里找到了类似的话题,但没有帮助我。我想显示地图,但当我运行它,它返回的力量关闭和我的android设备。我看到了很多关于这个错误的问题,但没有人真正回答我的问题。这是我的logcat: 这里是我的mainactivity.java 我已经从下面链接一步一步地阅读了,但是在我的代码中似乎有很多错误。我错过了什么?有什么建议吗?多谢。