【问题标题】:How to call Google maps app in another android application?如何在另一个安卓应用程序中调用谷歌地图应用程序?
【发布时间】:2014-04-11 07:52:18
【问题描述】:

我正在开发一个安卓应用。当用户单击 ListView 项目时,我的应用程序需要在 Google Maps 上显示一个图钉,但我不想将 Google Maps 放入我的应用程序 - 相反,我想使用 Intent 启动它。这可能吗?

以下是我的 DisplayActivity.java 文件。当用户单击 nameAddressList 中通过适配器分配给 ListView 的任何项目时,我想调用 Google 地图应用程序(如果未安装应用程序,则应通知用户)。

显示活动:

enter code herepublic class DisplayActivity extends Activity {

ListView listView;
private String tag_name; 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display);

    listView = (ListView) findViewById(R.id.list);

    Intent intent = getIntent();
    if(intent!= null)
    {
        //int imageId = intent.getIntExtra("DashboardImage",R.drawable.apartments);
        tag_name = intent.getStringExtra("DashItemName");
    }

    List<NameAddress> nameAddressList = null;
    try {
        XMLPullParserHandler parser = new XMLPullParserHandler(tag_name);
        nameAddressList = parser.parse(getAssets().open("data.xml"));
        ArrayAdapter<NameAddress> adapter =
            new ArrayAdapter<NameAddress>(this,R.layout.list_item, nameAddressList);
        listView.setAdapter(adapter);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.display, menu);
    return true;
  }
}

【问题讨论】:

标签: android google-maps android-listview


【解决方案1】:

要在谷歌地图上显示路线,只需调用一个通过当前和目的地纬度和经度的意图。完成此操作后,谷歌地图的工作就是显示位置。您还可以显示街景。

在下面的代码中,有三个参数:current_lat, current_longi, dest_address

 final Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http:/a/maps.google.com/maps?" 
+ "saddr="+ current_lat+","+current_longi + "&daddr="+dest_address ));

intent.setClassName("com.google.android.apps.maps","com.google.android.maps.MapsActivity");

startActivity(intent); 

如果你有当前地址和目的地址,那么你可以这样写:

Uri.parse("http://maps.google.com/maps?" 
+ "saddr="+curr_address+ "&daddr="+dest_address ));

如果你有当前和目的地的纬度和经度,那么你可以这样写:

Uri.parse("http://maps.google.com/maps?" 
+ "saddr="+ current_lat+","+current_longi + "&daddr="+ destt_lat+","+dest_longi  ));

当你调用这个意图时,谷歌地图会显示选择是通过公共汽车还是步行来绘制路线。

【讨论】:

  • 我不想路由它。我的 nameAddressList 有该位置的名称和地址。当用户单击此数组中的任何字符串时。它应该将该字符串传递给谷歌地图并显示该位置的图钉。另外请告诉我应该如何实施。我是 android 编程新手。
【解决方案2】:

使用下面的 sn-p 并尝试..../

String uri = "geo:"+ latitude + "," + longitude;
startActivity(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)));

【讨论】:

  • @Andrain 我没有位置的长和纬度。我的 nameAddressList 有位置的名称和地址。当用户单击此数组中的任何字符串时。它应该将该字符串传递给谷歌地图并显示该位置的图钉。另外请告诉我应该如何实施。我是 android 编程新手。
【解决方案3】:

试试这个代码,它对我有用,我想你也可以。在这里你必须输入地图包名称。

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(LaunchIntent);

【讨论】:

    【解决方案4】:

    您可以使用它从地址获取纬度和经度

    Geocoder coder = new Geocoder(this);
    List<Address> address;
    
    try {
        address = coder.getFromLocationName(strAddress,5);
        if (address == null) 
        {
            return null;
        }
        Address location = address.get(0);
        location.getLatitude();
        location.getLongitude();
       }
    

    获取经纬度后,您可以通过以下方式将其传递给谷歌地图

    Intent searchAddress = new  Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?q="+address));
    startActivity(searchAddress);
    

    希望对你有所帮助。

    【讨论】:

    • 但是您将地址传递给意图并不长和纬度。
    • 0,0 是纬度和经度值。 @Akshay
    猜你喜欢
    • 2012-07-04
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多