Android:打开地图意图,指示有两个点

时间:2014-08-07 19:43:16

标签: android google-maps

如何使用路线打开地图意图?

我知道

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format(Locale.US, "geo:%.8f,%.8f", latitude, longitude)));
startActivity(Intent.createChooser(intent, "Select an application"));

此代码适用于一点。但是我希望显示与 ALL 地图应用程序的对话框,并使用任何应用程序(Google Map,Citymapper,Web浏览器等)打开从A点到B点的路线。

4 个答案:

答案 0 :(得分:27)

你试过这个吗?

String uri = "http://maps.google.com/maps?f=d&hl=en&saddr="+latitude1+","+longitude1+"&daddr="+latitude2+","+longitude2;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(Intent.createChooser(intent, "Select an application"));

答案 1 :(得分:3)

试试这个

Uri uri = Uri.parse("geo:" + latitude1 + "," + longitude1 + "?q=" + Uri.encode(latitude2 + "," + longitude2 + "(" +Label+ ")"));
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);

答案 2 :(得分:1)

很遗憾,您无法使用通用URI来表示两个地理位置。

您可以指定单个点并将其传递给选择器,如:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f", lat, lng);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
context.startActivity(Intent.createChooser(intent, "Select your maps app"));

然而,不幸的是,要获得路线,您需要使用:

单个网址:

我认为最好的选择。您应该使用单个地图供应商并使用其URL作为URI。这样,您获得的指示是一致的,与多个设备兼容,最重要的是易于使用/获取。

纯旧网址

您可以为不同的地图供应商使用不同的网址。

例如, Citymapper

https://citymapper.com/london/superrouter?start=LAT_START,LNG_START&end=LAT_END,LNG_END

然而,其他人并不友好,例如 Yandex的

http://maps.yandex.com/?rtext=59.326460%2C12.699889~57.386826%2C12.348327&sll=12.941588%2C56.517713&sspn=34.716797%2C12.029728&rtm=atm&source=route&ll=12.941588%2C56.517713&spn=34.716797%2C12.029728&z=6&l=map

也许您可以自己解码该网址:)

Integrated Maps API

整合,例如将Google Maps API添加到您的应用中并显示其中的路线。 您需要以JSON格式从Directions API获取lat-lng点格式的路线。然后,您将使用这些点绘制折线。

答案 3 :(得分:0)

如果您使用

格式创建网址
http://maps.google.com/maps?saddr=[latitude1], [longitude1]&daddr=[latitude2], [longitude2]

其中[latitude1]和[longitude1]是起点的纬度和经度,同样[latitude2]和[longitude2]是终点,并将其设置为字符串

Intent navigationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(navigationUrlOfMap));
intent.setClassName("com.Google.Android.apps.maps", "com.Google.Android.maps.MapsActivity");
 startActivity(intent); 

或者你也可以使用它

startActivity(Intent.createChooser(intent, "Select an application"));

如果您想设置选择器应用程序