打开第三方地图App

本文介绍了一种检测手机上是否已安装特定地图应用程序(如百度地图或高德地图)的方法,并提供了如何通过代码直接启动这些地图应用并设置初始视图的具体实现。包括设置地图中心点坐标、是否显示交通状况等。

第一步:判断是否安装地图APP

 public static String PACKAGENAME_BD = "com.baidu.BaiduMap";//百度地图包名
    public static String PACKAGENAME_GD = "com.autonavi.minimap";//高德地图包名
  /**
     * 是否安装地图APP
     * @param context
     * @param packgeName
     * @return
     */
    public boolean ifInstallMap(Context context, String packgeName) {
        PackageInfo packageInfo = null;
        try {
            packageInfo = context.getPackageManager().getPackageInfo(packgeName, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageInfo == null) {
            return false;
        } else {
            return true;
        }
    }

第二步 打开地图APP

/**高德地图**/
    public void openMap(Context context) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory(Intent.CATEGORY_DEFAULT);

        //将功能Scheme以URI的方式传入data(以下设置默认显示我的位置)
        Uri uri = Uri.parse("androidamap://myLocation" +
                "?sourceApplication=应用名app_name" +
                "&poiname=fangheng" +
                "&lat=39.909695" +
                "&lon=116.470116" +
                "&dev=1" +
                "&style=2");
        intent.setData(uri);

        //启动该页面即可
        context.startActivity(intent);
    }

navi - 服务类型:(viewMap 地图标注;route 路径规划;bus 公交线路查询;keywordNavi 关键字导航;arroundpoi 周围分类;myLocation 我的位置;viewReGeo 逆地理编码;poi 搜素地点;openFeature 地铁图;rootmap 地图主图 )。
sourceApplication - 第三方调用应用名称
poiname - POI 名称
dev - 是否偏移( 0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)。
style - 导航方式 (0 速度快; 1 费用少; 2 路程短; 3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7 躲避收费和拥堵;8 不走高速躲避收费和拥堵)。

参考:http://lbs.amap.com/api/amap-mobile/guide/android/marker


 /**
     * 打开百度地图App
     * @param context
     */
    public void openBdMap(Context context) {
        Intent intent = new Intent();

        //显示当前位置
        intent.setData(Uri.parse("baidumap://map/show" +
                "?center=39.909695,116.470116" +
                "&traffic=on"));

        context.startActivity(intent);
    }

具体请参考:http://lbsyun.baidu.com/index.php?title=uri/api/android#2_.E6.8E.A5.E5.8F.A3.E8.AF.B4.E6.98.8E

### 实现 UniApp 中调用并打开第三方高德地图 #### 配置准备 为了能够在 UniApp 应用中成功调用并打开第三方高德地图应用程序,需先完成必要的配置工作。对于 iOS 平台而言,在项目根目录下的 `manifest.json` 文件中的 `"app-plus"` 字段下增加如下权限设置[^1]: ```json { "permissions": { "location": {} }, "distribute": { "apple": { "url-scheme": [ "com.amap.app" ] } } } ``` 而对于 Android,则无需特别修改 URL Scheme 来支持此功能。 #### 白名单添加 (iOS) 针对 iOS 设备,还需在项目的 `config.xml` 或者通过 HBuilderX IDE 添加 LSApplicationQueriesSchemes 列表项来声明允许查询的应用程序列表,具体操作是在 `<platform name="ios">...</platform>` 下加入以下 XML 片段[^2]: ```xml <edit-config file="*-Info.plist" mode="merge" target="LSApplicationQueriesSchemes"> <array> <string>amap</string> </array> </edit-config> ``` #### 创建高德开发者账号与获取 Key 前往高德开放平台注册成为开发者,并创建新的 Web API 密钥用于后续请求服务。注意保存好所获得的密钥信息以便集成至工程内使用[^3]。 #### 编写代码逻辑 下面给出一段完整的 JavaScript 函数作为示例,该函数接收目标地点坐标以及名称参数,尝试启动设备上的高德地图客户端展示指定位置;如果失败则回退为网页版链接方式呈现给用户[^4]。 ```javascript function openAmap(lat, lng, name) { const url = `android.intent://com.autonavi.minimap?action=AMAPPOIIDETAIL&pid=${encodeURIComponent(name)}&lat=${lat}&lon=${lng}`; try { plus.runtime.openURL(url); } catch(e){ console.error('Failed to launch AMap app:', e.message); // Fallback solution: Open web page instead. window.location.href=`https://uri.amap.com/navigation?from=&to=${name},${lat},${lng}&mode=car`; } } // Example usage: openAmap(39.908756, 116.397542, '天安门广场'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值