我有一个应用程序,我希望通过启动带有特定地理坐标的Google地图来显示不同的位置(当时一个位置,由用户输入选择)。
我目前正在使用它:(当然是真正的纬度和长值。)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);
这正是我想要的,除了它没有显示指定点的任何指示符或标记。它只位于它的位置。
有没有办法在不使用MapView的情况下获取标记或其他内容?
答案 0 :(得分:242)
试试这个:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
如果您不想要标签,可以省略(标签+名称),它会根据最近的街道或其认为相关的其他东西随机选择一个。
答案 1 :(得分:42)
接受的答案是正确的,除非您的标签中有&符号(&amp;)。
查看A Uniform Resource Identifier for Geographic Locations ('geo' URI):
第5.1节陈述:
如果最终URI要包含'query'组件,请添加 组件分隔符“?”到结果的最后,接着是 编码查询字符串。
对我们来说不幸的是,这样做也会逃避'=',这不是我们想要的。 我们应该做的是:
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 );
答案 2 :(得分:39)
Double myLatitude = 44.433106;
Double myLongitude = 26.103687;
String labelLocation = "Jorgesys @ Bucharest";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude + ">,<" + myLongitude + ">?q=<" + myLatitude + ">,<" + myLongitude + ">(" + labelLocation + ")"));
startActivity(intent);
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);
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);
答案 3 :(得分:5)
这个字符串适用于我:
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);
答案 4 :(得分:2)
您是否尝试将(LocationMarkerName)附加到地理位置:uri?例如“地理:,Z = 17(LocationMarkerName)”
在Android上的谷歌地图中搜索23.0980,30.6797(NamedMarker)似乎使地图居中并在该位置放置名称为NamedMarker的标记。
答案 5 :(得分:1)
刚刚确认@Kenton Price的以下片段仍适用于Android 4.4
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
答案 6 :(得分:0)
我只使用MapMap的Overlays在地图上绘制标记。如果您的视图显示地图,则可以简单地在屏幕中心绘制标记,就像在视图上绘制任何图像一样。但是,标记不会链接到实际的地图坐标,但如果它只是一个静态视图,则可能会这样做。