从我的应用程序转到Google Maps应用程序直接进入街景模式

问题描述 投票:0回答:2

我开发了一个车辆监控应用程序,使用OSMDroid(Open Street Maps)来显示车辆位置等。一切正常。

但是,我正在尝试做到这一点,当您按下地图上的车辆时,它会自动打开 Google 地图,并使用车辆的 GPS 坐标立即进入街景。

我无法在我的应用程序中使用 Google 地图,因为它对于商业应用程序来说不是免费的(至少,我的老板告诉我这一点,而且我必须使用 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;
}

一切正常,它会转到 Google 地图应用程序并指向车辆的位置 - 问题是,我还没有找到任何方法来自动进入该特定位置的街景。

我在这里找到了答案:

如何以编程方式在虚拟现实模式下打开街景?

执行此操作的代码是这个:

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;
android google-maps gps
2个回答
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


0
投票

我和你一样有同样的任务,也许你可以帮助我!我正在进行一个 React Native 项目,但我用 Java 创建了一个与你的相同的本机模块。我的代码在街景内的正确位置打开,但无法以全屏模式打开。你能以全屏模式打开它吗?

我的代码:

   public StreetViewModule(ReactApplicationContext context) {
        super(context);
    }

    @Override
    public String getName() {
        return "StreetViewModule";
    }

    @ReactMethod
    public void openStreetView(double latitude, double longitude) {
        // Create the URI for Google Street View
        Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15");
        // Create an Intent
        Intent streetViewIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
        // Make the Intent explicit by setting the Google Maps package
        streetViewIntent.setPackage("com.google.android.apps.maps");
         // Attempt to start an activity that can handle the Intent
        if (streetViewIntent.resolveActivity(getReactApplicationContext().getPackageManager()) != null) {
            streetViewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            getReactApplicationContext().startActivity(streetViewIntent);
        }
    }

© www.soinside.com 2019 - 2024. All rights reserved.