【问题标题】:Google maps route tracking谷歌地图路线跟踪
【发布时间】:2014-08-14 21:31:33
【问题描述】:

我正在使用 Google 地图生成行车路线。我想要一个功能,可以根据经过的时间和来自 Google 的总时间来估计某人在路线上的位置,并在他们估计的位置放置一个大头针(可能是一个移动大头针)。

我知道如何在 Google 中生成地图,但这就是我知识的局限所在。我如何将大头针放在大约位置。

我正在考虑将总时间转换为秒,将经过的时间转换为秒,然后除以得到路线上完成的百分比。我如何将大头针放置到这将是的路线位置?此外,我可以移动图钉吗?可能每 30 - 60 秒更新一次?

【问题讨论】:

    标签: gps maps tracking


    【解决方案1】:

    地图结果的持续时间属性已经以秒为单位。考虑到这一点,从某种意义上说,您可以按照路线 -> 腿 -> 步数持续时间,让您大致了解每一步的行程距离。

    既然您已经大致了解了每一步的行程距离,那么您可以与经过的时间进行比较,看看他们应该走哪一步。验证正确的步骤后,您可以使用该步骤的lat_lngs 放置标记。 lat_lngs 是在该步骤中传递的点数组,因此您可以根据经过的时间与应该开始该步骤的时间和应该开始的时间相比,计算出将标记放置在哪个 lat_lng完成它。

    这里有一些代码不会在您的应用程序上运行,并且不包含任何实际的经过时间逻辑,因此最好将其视为伪代码:

    // route is a directionsService (google.maps.DirectionsService()) result
    route = response.routes[0];
    route.legs.forEach(function(leg) {
        var counter = 0;
        leg.steps.forEach(function(step) {
            counter = counter + step.duration.value;
            console.log("Route progress in seconds: " + counter);
            if (elapsed >= counter) {
                // percent would take the beginning and end time for the step 
                // and compare it to the elapsed duration to get a percentage
                // that would be used to get the index of the appropriate lat_lng
                var marker = new google.maps.Marker({
                    position: step.lat_lngs[percent], 
                    map: map,
                    title: "Current Location"
                });
            }
        });
    });
    

    您必须创建自己的逻辑来实际更新地图等,但希望这是一个不错的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-12
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2017-02-08
      • 2018-02-26
      • 2014-08-12
      相关资源
      最近更新 更多