我的应用程序需要显示谷歌地图方向从A到B,但我不想把谷歌地图到我的应用程序-相反,我想用一个意图启动它。这可能吗?如果是,怎么做?
当前回答
试试这个
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+src_lat+","+src_ltg+"&daddr="+des_lat+","+des_ltg));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
其他回答
如果你想从当前方向显示纬度和经度,你可以使用这个:
方向总是从用户当前位置给出。
下面的查询将帮助您执行此操作。你可以在这里通过目的地的经纬度:
google.navigation:q=latitude,longitude
以上用途:
Uri gmmIntentUri = Uri.parse("google.navigation:q=latitude,longitude");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
或者如果你想通过位置显示,使用:
google.navigation:q=a+street+address
更多信息: 谷歌为Android地图意图
你可以使用这样的代码:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);
若要从当前位置开始导航,请删除saddr参数和值。
您可以使用实际的街道地址,而不是经纬度。然而,这将给用户一个对话框,选择通过浏览器打开它或谷歌地图。
这将在导航模式下直接启动谷歌地图:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=an+address+city"));
更新
2017年5月,谷歌推出了通用、跨平台谷歌地图url的新API:
https://developers.google.com/maps/documentation/urls/guide
你也可以在新的API中使用intent。
这有点跑题了,因为你问了“方向”,但你也可以使用Android文档中描述的Geo URI方案:
http://developer.android.com/guide/appendix/g-app-intents.html
使用“geo:latitude,longitude”的问题是谷歌Maps仅以您的点为中心,没有任何大头针或标签。
这很让人困惑,尤其是当你需要指明一个确切的地方或问路的时候。
如果使用查询参数“geo:lat,lon?”Q =name”为了标记您的地理点,它使用查询来搜索并取消lat/lon参数。
我找到了一种方法,以纬度/lon居中的地图和显示一个自定义标签的大头针,非常好的显示和有用的时候,询问方向或任何其他行动:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=37.423156,-122.084917 (" + name + ")"));
startActivity(intent);
注意(by @TheNail):在地图v.7中不能工作(撰写本文时的最新版本)。将忽略坐标并搜索圆括号之间具有给定名称的对象。请参见谷歌将7.0.0映射为location的Intent
你可以尝试通过Intent打开内置应用Android Maps。setClassName方法。
Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("geo:37.827500,-122.481670"));
i.setClassName("com.google.android.apps.maps",
"com.google.android.maps.MapsActivity");
startActivity(i);
首先你需要知道,现在你可以使用隐式意图,android文档为我们提供了一个非常详细的通用意图 为了实现映射意图,你需要创建一个带有两个参数的新意图
行动 尤里
对于动作,我们可以使用Intent。ACTION_VIEW 对于Uri,我们应该构建它,下面我附上了一个示例代码来创建,构建,启动活动。
String addressString = "1600 Amphitheatre Parkway, CA";
/*
Build the uri
*/
Uri.Builder builder = new Uri.Builder();
builder.scheme("geo")
.path("0,0")
.query(addressString);
Uri addressUri = builder.build();
/*
Intent to open the map
*/
Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
/*
verify if the devise can launch the map intent
*/
if (intent.resolveActivity(getPackageManager()) != null) {
/*
launch the intent
*/
startActivity(intent);
}
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 碎片中的onCreateOptionsMenu
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?