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

时间:2010-10-21 17:15:31

标签: android google-maps android-intent android-maps

我有一个应用程序,我希望通过启动带有特定地理坐标的Google地图来显示不同的位置(当时一个位置,由用户输入选择)。

我目前正在使用它:(当然是真正的纬度和长值。)

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

这正是我想要的,除了它没有显示指定点的任何指示符或标记。它只位于它的位置。

有没有办法在不使用MapView的情况下获取标记或其他内容?

7 个答案:

答案 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)

使用intent ...

启动Google地图还有很多选项
   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);

答案 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在地图上绘制标记。如果您的视图显示地图,则可以简单地在屏幕中心绘制标记,就像在视图上绘制任何图像一样。但是,标记不会链接到实际的地图坐标,但如果它只是一个静态视图,则可能会这样做。