如何在由geo uri Intent发布的地图中显示标记?

我有一个应用程序,我想通过启动Google地图及其特定的地理坐标来显示不同的位置(当时一个,由用户input)。

我目前正在使用这个(当然,真正的经纬度值)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17")); startActivity(intent); 

这正是我想要的,只是它没有显示任何指示器或标记的指定点。 它只集中在它的位置。

有没有一些方法来获得标记或其他东西,而不使用MapView?

尝试这个:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)")); startActivity(intent); 

如果您不需要标签,您可以省略(标签+名称),并根据最近的街道或其他认为相关的东西随机select一个。

被接受的答案是正确的,除非您的标签中包含&符(&)。

查看地理位置统一资源标识符(“地理”URI) :

第5.1节指出:

如果最终的URI包含“查询”组件,则添加组件分隔符“?” 到结果的末尾,然后是编码的查询string。

不幸的是,对我们来说,这样做也将逃避“=”,这不是我们想要的。 我们应该做的是这样的:

 String label = "Cinnamon & Toast"; String uriBegin = "geo:12,34"; String query = "12,34(" + label + ")"; String encodedQuery = Uri.encode( query ); String uriString = uriBegin + "?q=" + encodedQuery; Uri uri = Uri.parse( uriString ); Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri ); startActivity( intent ); 

有更多的select来启动谷歌地图使用意图…

  Double myLatitude = 44.433106; Double myLongitude = 26.103687; String labelLocation = "Jorgesys @ Bucharest"; 

1)

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude + ">,<" + myLongitude + ">?q=<" + myLatitude + ">,<" + myLongitude + ">(" + labelLocation + ")")); startActivity(intent); 

2)

 String urlAddress = "http://maps.google.com/maps?q="+ myLatitude +"," + myLongitude +"("+ labelLocation + ")&iwloc=A&hl=es"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress)); startActivity(intent); 

3)

  String urlAddress = "http://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + myLatitude + "," + myLongitude + "&fov=90&heading=235&pitch=10&sensor=false"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress)); startActivity(intent); 

这个string适合我:

 String geoUriString="geo:"+lat+","+lon+"?q=("+head+")@"+lat+","+lon; Uri geoUri = Uri.parse(geoUriString); Log.e(TAG, "String: "+geoUriString); Intent mapCall = new Intent(Intent.ACTION_VIEW, geoUri); startActivity(mapCall); 

你有尝试追加(LocationMarkerName)的地理:uri吗? 例如“geo:,?z = 17(LocationMarkerName)”

在Android上的谷歌地图search23.0980,30.6797(NamedMarker)似乎居中映射,并在该位置定位名为NamedMarker的标记。

刚刚确认@Kenton价格仍然适用于Android 4.4以下片段

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)")); startActivity(intent); 

我只使用了MapView的覆盖图在地图上绘制标记。 如果您的视图正在显示地图,则可以简单地在屏幕的中心绘制标记,就像在“视图”上绘制任何图像一样。 但是,标记不会链接到实际的地图坐标,但如果它只是一个静态视图,那么这可能会。