Google Maps Api 直线(最短)路线

2024-04-07

我目前正在尝试找到一种使用 Google Maps Api V3 获得直线路线的方法。

我已经设法使用地理编码和方向服务来获取从 A 点到 B 点的路线,包括两条替代路线。我还尝试过“禁止高速公路”和“禁止通行费”,但似乎没有什么可以完全解决这个问题...... 目前,我检查了三个给定路线的最低英里数,但这必须证明这并不是真正的最短路线。

I am not搜索最快或最快的路线,但只是直线路线与 as 低里程尽可能。

由于我没有找到any通过使用谷歌解释类似我需要我问你的事情。也许有人在这里有解决方案......

P.S.:我也无法使用“行人模式”,因为当我们安装的导航系统再次无法工作时,它会用作我们当地消防车的导航帮助。 这也是为什么我们需要尽可能低的公里数的原因 - 当在这里驾驶消防车时,最快的路线 99% 是里程数最低的路线,但 Api 不会让我决定这一点并坚持使用主要道路


为了获得从 A 到 B 的最短路线,我建议使用“alternatives=true”参数进行不同的查询,在避免=收费、避免=高速公路之间使用“避免”参数,然后我会比较所有结果以选择最短路线。

 directionsService = new google.maps.DirectionsService;
//avoiding tolls
            directionsService.route({
                origin: {
                    'placeId': originId
                },
                destination: {
                    'placeId': destinationId
                },
                provideRouteAlternatives: true,
                avoidTolls: true,
                travelMode: google.maps.TravelMode.DRIVING
            }, function(response, status) {
                if (status === google.maps.DirectionsStatus.OK) {
                    routesResponses.push(response);
                }
                else {
                    window.alert('Directions request failed due to ' + status);
                }
            });
            //avoiding highways
            directionsService.route({
                origin: {
                    'placeId': originId
                },
                destination: {
                    'placeId': destinationId
                },
                provideRouteAlternatives: true,
                avoidHighways: true,
                travelMode: google.maps.TravelMode.DRIVING
            }, function(response, status) {
                if (status === google.maps.DirectionsStatus.OK) {
                    routesResponses.push(response);
                }
                else {
                    window.alert('Directions request failed due to ' + status);
                }

                //Results analysis and drawing of routes
                var fastest = Number.MAX_VALUE,
                    shortest = Number.MAX_VALUE;

                routesResponses.forEach(function(res) {
                    res.routes.forEach(function(rou, index) {
                        console.log("distance of route " +index+": " , rou.legs[0].distance.value);
                        console.log("duration of route " +index+": " , rou.legs[0].duration.value);
                        if (rou.legs[0].distance.value < shortest) shortest = rou.legs[0].distance.value  ;
                        if (rou.legs[0].duration.value < fastest) fastest = rou.legs[0].duration.value  ;

                    })
                })
                console.log("shortest: ", shortest);
                console.log("fastest: ", fastest);
//painting the routes in green blue and red
                 routesResponses.forEach(function(res) {
                    res.routes.forEach(function(rou, index) {
                        new google.maps.DirectionsRenderer({
                            map:map,
                            directions:res,
                            routeIndex:index,
                            polylineOptions:{
                                strokeColor: rou.legs[0].duration.value == fastest? "red":rou.legs[0].distance.value == shortest?"darkgreen":"blue",
                                strokeOpacity: rou.legs[0].duration.value == fastest? 0.8:rou.legs[0].distance.value == shortest? 0.9: 0.5,
                                strokeWeight: rou.legs[0].duration.value == fastest? 9:rou.legs[0].distance.value == shortest? 8: 3,
                            }
                        })
                    })
                })   
            });
        }

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Maps Api 直线(最短)路线 的相关文章

  • Google 地图无法使用 XHTML Doctype(文档类型)

    到底为什么如果我们在 Google 地图上使用 Doctype 总是有可能出现无法正确显示 Google 地图的问题 在最近的一个案例中 这个 Doctype 只花了我 2 天的时间 却没有任何生产力 多么令人厌恶的案件 这次我得到了一位同
  • Google 地图上的自定义路线/路径/道路

    我需要能够使用 V2 或 V3 最好是 3 创建在某种意义上忽略建筑物的路径 我试图创建一个 kml 文件来自己绘制所有路径 然后找到某种方法根据需要打开 关闭它们 例如 用户想要从 A 点前往 B 点 这些点之间有许多建筑物 用户可以实际
  • Google 地图第二次无法加载 - AngularJS

    我正在使用 GoogleMap API angular google maps js 包 并且我有一个非常奇怪的行为 The first time I load it i get the full map loaded like here
  • 在 Akka 中配置嵌套 Router

    我有一些嵌套的路由器 应创建它FromConfig 我想要的是这样的 test akka actor deployment worker router round robin nr of instances 5 slave router b
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • 我可以更改 Route-Model-Binding 的解析逻辑以始终小写字符串键吗?

    我在 Laravel 5 7 项目中使用 UUID 键 并且效果非常好 当通过路由从数据库请求项目时 将查找键并将其作为字符串进行比较 当请求发送大写的 uuid 字符串时 路由模型绑定将找不到模型 因为 Laravel 的 UUID 字符
  • 如何在 Google 地图 InfoWindow 中使用 Jquery?

    我想在 Google 地图 InfoWindow 中显示 jQuery 效果 显示和隐藏 div 我该怎么做 尽管我个人还没有尝试过 但这 gt http code google com p jquery ui map http code
  • Android SHA1 发布密钥库无法与 Google 地图配合使用

    我正在使用 Google Maps Android API 但遇到了一些问题 我正在使用 android studio 签署我的 apk 在 android keystore jks 创建一个 另外 我选择 发布 作为其中的类型 我已经使用
  • Google 地图 InfoBubble PixelOffset(从标记上方的默认位置移动)

    我正在尝试实现一个自定义 infoBubble 它的框打开到标记的侧面 而不是顶部的默认位置 事实证明这比预期的要困难 使用普通的infoWindow 您可以使用pixelOffset 请参阅此处文档 https developers go
  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica
  • 在 Heroku 上托管的 Rails3 中强制使用“www”,无需 .htaccess

    我想知道是否有 Rack 替代方案来强制 URL 中包含 www 因为 Heroku 不使用 htaccess 文件 也许甚至是在路线中做到这一点的好方法 Thanks 在您的 ApplicationController 中 您可以简单地创
  • 如何将额外的文本添加到颤振谷歌地图自定义标记中?

    问题是如何将自定义谷歌地图标记上的文本重叠与代表车辆登记号的文本融合在一起 我尝试使用此方法将文本叠加在图标上 生成器 上下文 gt 但根本不被认可 class MapsDemo extends StatefulWidget overrid
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • Bootstrap 导航栏与 Google 位置重叠自动完成下拉菜单

    我有一个导航栏 我试图在其中添加一个地点搜索框 除了谷歌位置提示框的一小部分被导航栏重叠 如下图所示 之外 一切几乎都有效 我尝试过改变z index输入框的值改为10或2000或90000但似乎没有效果 我还缺少其他需要做的事情吗 这是
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • Infowindow 仅适用于 1 条路线,不适用于 google 地图中的其他 3 条路线

    我在谷歌地图上总共有 5 个位置 我已经为此设置了标记 并在标记之间添加了路线路径 在这条路径之间我添加了信息窗口 但它仅适用于 1 条路线 不适用于其他 3 条路线 任何人都可以帮忙吗我为什么它不适用于其他 3 条路线 而且在关闭该信息窗
  • 如何在flutter中的命名路由中传递多个参数

    我正在尝试将多个参数传递给命名路由 我尝试了很多事情 但到目前为止还没有成功 谁能告诉我如何实现这一目标 路线 dart import package flutter cupertino dart import package flutte
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输

随机推荐