从我的应用项目中调用Google地图应用

时间:2014-01-12 08:47:11

标签: android google-maps

我正在互联网上搜索如何在我的Android应用程序中打开我在我的Android设备上使用按钮安装的Google地图应用。但我找不到它。我想使用谷歌地图应用程序导航到某个地方。你可以给我一个教程,一些代码或网站链接吗?

3 个答案:

答案 0 :(得分:3)

您也可以使用http://maps.google.com/maps作为您的URI

String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);

或确保仅使用Google地图应用,这会阻止意图过滤器(对话框)显示使用

intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
像这样:

String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", sourceLatitude, sourceLongitude, destinationLatitude, destinationLongitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

或通过在每组坐标后面的括号内添加一个字符串来为位置添加标签,如下所示:

String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?saddr=%f,%f(%s)&daddr=%f,%f (%s)", sourceLatitude, sourceLongitude, "Home Sweet Home", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

要将用户当前位置用作起点(遗憾的是我还没有找到标记当前位置的方法),请按以下方式删除saddr参数:

String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", destinationLatitude, destinationLongitude, "Where the party is at");
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);

为了完整性,如果用户没有安装地图应用程序,那么捕获ActivityNotFoundException是一个好主意,就像@TonyQ所述,然后我们可以在没有地图应用限制的情况下再次启动活动,我们可以非常肯定我们最终永远不会去Toast,因为互联网浏览器也是启动这个url方案的有效应用程序。

        String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?&daddr=%f,%f (%s)", 12f, 2f, "Where the party is at");
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
        intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
        try
        {
            startActivity(intent);
        }
        catch(ActivityNotFoundException ex)
        {
            try
            {
                Intent unrestrictedIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
                startActivity(unrestrictedIntent);
            }
            catch(ActivityNotFoundException innerEx)
            {
                Toast.makeText(this, "Please install a maps application", Toast.LENGTH_LONG).show();
            }
        }

答案 1 :(得分:0)

或者,要检查您的设备中是否安装了Google地图应用,您可以使用以下代码:

if (intentLocation.resolveActivity(getPackageManager()) != null) {
            startActivity(intentLocation);
        } else {

Toast.makeText(this, R.string.app_not_available,
                        Toast.LENGTH_LONG).show();
  

//或者如果您使用View.OnClickListener使用YourActivity.this

Toast.makeText(YourActivity.this, R.string.app_not_available,
                        Toast.LENGTH_LONG).show();
            }

答案 2 :(得分:0)

我知道这是一种不同的语言,但你可以从我在android shell上取得的内容中扣除如何使用你的语言:

这显示地图,没有标记:

am start -a android.intent.action.VIEW -d geo:47.6,-122.3

这会显示带有标记的地图:

am start -a android.intent.action.VIEW -d geo:47.6,-122.3?q=47.6,-122.3

然后我终于明白了:

am start -a android.intent.action.VIEW -d google.navigation:q=47.6,-122.3