如何使用路线打开地图意图?
我知道
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点的路线。
答案 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"));
如果您想设置选择器应用程序