我开发了一种车辆监控应用程序,它使用OSMDroid(开放街道地图)来显示车辆位置等。一切正常。
但是,我试图这样做,当你在地图上按下车辆时,它会自动打开谷歌地图,并使用车辆的GPS坐标立即进入街景。
我无法在我的应用程序中使用谷歌地图,因为它不适用于商业应用程序(至少,我的老板告诉我,我必须使用OSMDroid)。我这样说只是因为我不希望你的答案是“只使用谷歌地图API” - 我知道我可以,但我不能。
解决方案是 - 将我的应用程序中的GPS信息作为意图发送到平板电脑上已安装的Google地图应用程序。
这是我使用的代码:
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
//on a tap on the bus map indicator, go to google maps in the particular location of the bus
Uri uri = Uri.parse("geo:"+gpsLatitude[0]+","+gpsLongitude[0]+"?z=" + map.getZoomLevel());
//set the data for the intent as the created uri
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
//go to the location of the bus
startActivity(intent);
return true;
}
一切运作良好,它会转到谷歌地图应用程序并指向车辆的位置 - 问题是,我没有找到任何方法自动进入该特定位置的街景。
我在这里找到了答案:
How to open a street view in virtual reality mode programmatically?
执行此操作的代码是:
Intent streetView = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("google.streetview:cbll=27.173891,78.042068" + "&cbp=1,90,,0,1.0&mz=8"));
startActivity(streetView);
但是,我不确定“& cpb”参数代表什么。
可能的答案:https://productforums.google.com/forum/#!topic/maps/aBj7qc8j0BI
这是我的新代码 - 这一次,我只得到一个不断加载的黑屏:
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
//on a tap on the bus map indicator, go to street view in the particular location of the bus
Uri googleMapsUri = Uri.parse("google.streetview:cbll="+gpsLatitude[0]+","+gpsLongitude[0]);
//set the data for the intent as the created uri
Intent mapIntent = new Intent(Intent.ACTION_VIEW,googleMapsUri);
// specify the google maps package
mapIntent.setPackage("com.google.android.apps.maps");
//go to the location of the bus
startActivity(mapIntent);
return true;
答案 0 :(得分:1)
// Create a Uri from an intent string. Use the result to create an Intent.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);
https://developers.google.com/maps/documentation/urls/android-intents