获取当前位置起点到uri以开始导航

问题描述 投票:0回答:2

我终于找到了如何在uri中添加更多位置到我的路线:

例:

Intent intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("https://www.google.com/maps/dir/48.8276261,2.3350114/48.8476794,2.340595/48.8550395,2.300022/48.8417122,2.3028844"));
StartActivity(intent);

问题是我只看到预览按钮,而不是开始导航。我认为这是因为第一点不是当前位置。有谁知道如何设置第一点作为我目前的起点,有可能开始导航?

android google-maps xamarin.android
2个回答
1
投票

也许dir_action = navigate参数设置将接近您想要的。

在官方Google地图文档中,Developer Guide中关于形成方向URL的部分讨论了如何使用Intent进行导航。在参数中有dir_action = navigate和waypoints来设置导航模式和中间航路点设置。如果您需要从用户的起点开始,则原点参数可以是(原始到最相关的起始位置,例如用户位置,如果可用)。

https://www.google.com/maps/dir/?api=1&parameters

origin:定义显示方向的起点。默认为最相关的起始位置,例如用户位置(如果可用)。如果不是,则生成的地图可以提供空白表格以允许用户输入原点。

dir_action = navigate(可选):根据原点是否可用,启动转弯导航或路线预览到指定目的地。如果用户指定原点并且它不接近用户的当前位置,或者用户的当前位置不可用,则地图启动路线预览。如果用户未指定原点(在这种情况下,原点默认为用户的当前位置),或者原点接近用户的当前位置,则地图会启动逐向导航。请注意,所有Google地图产品和/或所有目的地之间均无法导航;在这些情况下,此参数将被忽略。

航路点:指定一个或多个中间位置,用于在原点和目的地之间路由方向。可以使用管道符(|)分隔地点(例如,柏林,德国|巴黎,法国)来指定多个航路点。允许的航点数因链接打开的平台而异,移动浏览器最多支持三个航点,否则最多支持9个航点。航点以与URL中列出的顺序相同的顺序显示在地图上。每个航路点可以是地名,地址或以逗号分隔的纬度/经度坐标。字符串应该是URL转义的,因此诸如“柏林,德国|巴黎,法国”之类的航点应转换为柏林%2CGermany%7CParis%2CFrance。

您的数据示例:

Intent intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse("https://www.google.com/maps/dir/?api=1&origin=48.8276261,2.3350114&destination=48.8417122,2.3028844&waypoints=48.8476794,2.340595|48.8550395,2.300022&travelmode=driving&dir_action=navigate"));
StartActivity(intent);

如果想要从当前位置defaulf:

显示:"https://www.google.com/maps/dir/?api=1&origin=&destination=48.8417122,2.3028844&waypoints=48.8476794,2.340595|48.8550395,2.300022&travelmode=driving&dir_action=navigate"

这是一个official method,可以帮助您测试您的目的地是否在规划范围内并自动从当前位置开始:

Android.Net.Uri gmmIntentUri = Android.Net.Uri.Parse("google.navigation:q=48.8417122,2.3028844");
Intent mapIntent = new Intent(Intent.ActionView, gmmIntentUri);
mapIntent.SetPackage("com.google.android.apps.maps");
StartActivity(mapIntent);

您可以将q=48.8417122,2.3028844修改为您想要的测试目的地数据。

如果想修改模拟器的位置,请看下面的截图:

enter image description here enter image description here


1
投票

你可以用这个:

String mapsUrl = "https://www.google.com/maps/dir/?api=1&origin=48.8276261,2.3350114&destination=48.8476794,2.340595&waypoints=48.8550395,2.300022|48.8417122,2.3028844&travelmode=driving&dir_action=navigate";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mapsUrl));
startActivity(intent);

哪里

origin是你的起点destination是你的终点waypoints是你的站点

你应该使用waypoint添加|

例如:waypoints=48.8550395,2.300022|48.8417122,2.3028844

您还可以添加travelmode以指定旅行模式

这些是您可以使用的旅行模式:drivingbicyclingtransitwalking

这将在驾驶模式下打开Goog​​le地图

© www.soinside.com 2019 - 2024. All rights reserved.