android – 从我的应用程序在特定位置打开StreetView
作者:互联网
我正试图通过Android应用在全景模式下打开Google StreetView.
我真的想打开谷歌街景而不是谷歌地图,因为我想使用虚拟现实应用程序使用VR玻璃,它使用立体视图和全景模式.我想要的全景模式是这样的:https://youtu.be/3mQKGEnWxIw
以下代码打开StreetView应用:
PackageManager pm = this.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.street");
startActivity(intent);
但它会在默认屏幕上打开.
编辑1:
我发现了如何打开街景的全景活动.首先,我列出了应用程序中的可用活动:
void listAppActivities(String packagename) {
PackageManager pManager = getPackageManager();
Intent startIntent = new Intent();
startIntent.setPackage(packagename);
List<ResolveInfo> activities = pManager.queryIntentActivities(startIntent, 0);
for (ResolveInfo ri : activities) {
System.out.println("getAppActivities::nome::" + ri.activityInfo.name);
}
}
然后我使用了活动com.google.vr.app.StreetViewApp.StreetViewApp.我可以使用以下代码直接启动StreetView Panorama Activity:
void openStreetView() {
String packagename = "com.google.android.street";
PackageManager pm = this.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(packagename);
intent.setComponent(new ComponentName(packagename, "com.google.vr.app.StreetViewApp.StreetViewApp"));
startActivity(intent);
}
但我仍然不知道如何将位置参数传递给StreetView.我怎样才能做到这一点?
我测试过使用URI:
Uri gmmIntentUri;
//gmmIntentUri = Uri.parse("geo:"+lat+","+lng); // Test1
gmmIntentUri = Uri.parse("google.streetview:cbll="+lat+","+lng); // Test2
//gmmIntentUri = Uri.parse("http://maps.google.com/maps?ll="+lat+","+lng); // Test3
intent.setData(gmmIntentUri);
并使用Intent.putExtra:
intent.putExtra("cbll", lat+","+lng);
intent.putExtra("args", "cbll="+lat+","+lng);
intent.putExtra("lat", new Double(lat));
intent.putExtra("long", new Double(lng));
intent.putExtra("lng", new Double(lng));
但没有成功.有谁知道如何在全景模式下将位置参数传递给StreetView App?
编辑2:
我发现如果我使用街景视图突出显示的链接或特色位置,则可以在全景模式下打开街景视图,并传递URI意图.我测试了以下链接:
https://www.google.com/streetview/#christmas-island/ethel-beach-2
https://www.google.com/streetview/#russian-landmarks/terskol-1
https://www.google.com/streetview/#day-of-the-dead-in-mexico/ofrenda-dia-de-muertos-zocalo
更多信息可以在这里找到:
https://www.google.com/streetview/
但仍然不知道如何传递通用位置.
解决方法:
以下是使用传递坐标打开Google街景的方法:
(我刚测试它,它按预期工作)
private void openStreetView (double latitude, double longitude) {
Uri gmmIntentUri = Uri.parse ("google.streetview:cbll=" + latitude + "," + longitude);
Intent mapIntent = new Intent (Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage ("com.google.android.apps.maps");
startActivity (mapIntent);
}
你很亲密!你犯的错误就是你在第三个代码片段上用一个不正确的Uri覆盖了Uri
标签:android,google-street-view,google-maps 来源: https://codeday.me/bug/20190910/1801775.html