获取当前位置起点到uri以启动导航

时间:2019-04-03 09:49:36

标签: android google-maps xamarin.android

我终于找到了如何在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);

问题在于我只看到“预览”按钮,而没有看到“开始开始导航”。 我认为这是由于第一点不是当前位置。 有谁知道如何将第一个点设置为我当前所在的起点,从而有可能开始导航?

2 个答案:

答案 0 :(得分: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地图

答案 1 :(得分:1)

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

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

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

来源:定义显示路线的起点。默认为最相关的起始位置,例如用户位置(如果有)。如果没有,则生成的地图可能会提供空白表格,以允许用户输入原点。

     

dir_action = navigate (可选):根据原点是否可用,启动路口导航或将路线导航到指定目的地。如果用户指定了一个原点,并且该原点不靠近用户的当前位置,或者该用户的当前位置不可用,则地图将启动路线预览。如果用户未指定原点(在这种情况下,原点默认为用户的当前位置),或者原点接近用户的当前位置,则地图将启动逐行导航。请注意,并非在所有Google Maps产品上和/或在所有目的地之间都可以使用导航;在这种情况下,此参数将被忽略。

     

路线点:指定一个或多个中间地点,以在起点和终点之间路由路线。可以使用竖线字符(|)来指定多个航点,以分隔各个地点(例如,柏林,德国|巴黎,法国)。允许打开的航点的数量因链接打开的平台而异,移动浏览器最多支持三个航点,否则最多支持九个航点。航点在地图上的显示顺序与URL中列出的顺序相同。每个航路点可以是地名,地址或逗号分隔的纬度/经度坐标。字符串应转义URL,因此将诸如“柏林,德国|巴黎,法国”之类的航点转换为Berlin%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);

如果要从当前位置脱毒:

Uri是:"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