Android 安卓-如何在安卓应用程序中使用特定位置、缩放级别和标记启动谷歌地图意图

Android 安卓-如何在安卓应用程序中使用特定位置、缩放级别和标记启动谷歌地图意图,android,google-maps,android-intent,Android,Google Maps,Android Intent,地图意图不适用于特定缩放级别和自定义标记 float lat = 40.714728f; float lng = -73.998672f; String maplLabel = "ABC Label"; final Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:0,0?q="+lat+","+lng+"&z=16 (" +

地图意图不适用于特定缩放级别和自定义标记

    float lat = 40.714728f;
    float lng = -73.998672f;

    String maplLabel = "ABC Label";
    final Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
            Uri.parse("geo:0,0?q="+lat+","+lng+"&z=16 (" + maplLabel + ")"));
    startActivity(intent);
有人知道怎么回事吗?或者如何做到这一点?
我想在特定的缩放级别上使用自定义标签标记显示特定(纬度、液化天然气)的地图。

尝试以下解决方案:

double latitude = 40.714728;
double longitude = -73.998672;
String label = "ABC Label";
String uriBegin = "geo:" + latitude + "," + longitude;
String query = latitude + "," + longitude + "(" + label + ")";
String encodedQuery = Uri.encode(query);
String uriString = uriBegin + "?q=" + encodedQuery + "&z=16";
Uri uri = Uri.parse(uriString);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);
这里值得赞扬:


我相信问题与你标签上的空格有关。对查询字符串进行编码将通过使用有效字符替换空格来消除此问题

在地图应用程序中显示位置:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
String data = String.format("geo:%s,%s", latitude, longitude);
if (zoomLevel != null) {
    data = String.format("%s?z=%s", data, zoomLevel);
}
intent.setData(Uri.parse(data));
startActivity(intent);


它几乎包含了所有与地图意图相关的内容。

对此进行了测试,效果良好。。你确定没有在实际代码中注释掉startActivity?对不起,我的错误,我忘了在这篇文章中取消注释。我测试了它,它显示无法加载URL。你们是怎么做到的?我想用marker在缩放级别16显示这个位置,它对位置和标记有效,但当我应用z参数时,它根本不起作用。当从“地图”应用程序按“后退”按钮时,会显示一个黑屏,并重新创建基础活动。你们知道如何解决这个问题吗?当从“地图”应用程序按“后退”按钮时,屏幕上显示了一个黑屏,并重新创建了底层活动。你知道如何解决这个问题吗?@dymmeh这个答案已经有4年历史了。我现在无法让它工作。我发布了一篇新的文章,但除了有人说从Maps7.x开始这不起作用外,没有引起太多的兴趣。你知道地图上的变化或其他原因吗?现在可能不起作用了。我缺少
?q=
。如果你想要标记,你必须提供查询参数。当从“地图”应用程序中按“后退”按钮时,会出现一个黑屏,并且会重新创建基础活动。你知道如何解决这个问题吗?你希望@jas发生什么事?
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=" + location.getLatitude() + "," + location.getLongitude()));
startActivity(intent);