我已经看到这个例子到处张贴以打开以特定点为中心的谷歌地图:
String uri = String.format(Locale.ENGLISH, "geo:%f,%f", lat, lon);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
然而,在我看来,至少在最新的地图版本中,第一次调用它时忽略了这一点,而是缩放到用户位置。这是一个错误吗?
我已经看到这个例子到处张贴以打开以特定点为中心的谷歌地图:
String uri = String.format(Locale.ENGLISH, "geo:%f,%f", lat, lon);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(intent);
然而,在我看来,至少在最新的地图版本中,第一次调用它时忽略了这一点,而是缩放到用户位置。这是一个错误吗?
我可以通过 AsyncTask 两次调用意图来解决这个问题。我不知道这是否是正确的方法,但它对我有用!
这是我的代码:
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
String uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f(%s)&z=40", lat, lon, square);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
mContext.startActivity(intent);
return null;
}
@Override
protected void onPostExecute(Void result) {
String uri = String.format(Locale.ENGLISH, "geo:0,0?q=%f,%f(%s)&z=40", lat, lon, square);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
mContext.startActivity(intent);
}
}.execute();
}
我意识到我从来没有回答过这个问题。这最终是我使用的,它似乎工作正常。上面的答案也可以!
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?q="+lat+","+lon);
startActivity(intent);
除了在驾驶模式下启动地图之外,要执行相同的操作,请执行以下操作:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?daddr="+lat+","+lon);
startActivity(intent);