1. uniapp调用高德、百度、腾讯地图

  在uni-app中,可以通过调用不同地图APP(腾讯、百度、高德)进行位置标注,适用于Android和iOS系统。
 &emsp首先,你需要获取用户的当前位置信息,包括经纬度。这可以通过uni-app的API来实现,例如使用uni.getLocation方法。
 &emsp获取到用户的当前位置信息后,你可以使用这些信息来构建跳转到特定地图应用的URL。例如,对于高德地图,你可以使用类似androidamap://viewMap?sourceApplication=appname&poiname=位置名称&lat=纬度&lon=经度&dev=0的URL格式。
 &emsp在uni-app中,可以使用plus.runtime.openURL方法来打开构建好的URL,从而跳转到相应的地图应用。
 &emsp对于iOS平台,需要注意的是,你需要在项目的配置文件中(如manifest.json)设置URL scheme白名单,以便允许应用打开外部URL。
在这里插入图片描述

  /**
     * 点击某个地方,调起下面的方法
     * 方法要传入需要标注地点的纬度latitude,经度longitude,地名name
     * @param latitude
     * @param longitude
     * @param name
     */
  toMapAPP(latitude,longitude,name){
                let url = "";
                if (plus.os.name == "Android") {//判断是安卓端
                    plus.nativeUI.actionSheet({//选择菜单
                        title: "选择地图应用",
                        cancel: "取消",
                        buttons: [{title: "腾讯地图"},{title: "百度地图"}, {title: "高德地图"}]
                    }, function(e) {
                        switch (e.index) {
                            //下面是拼接url,不同系统以及不同地图都有不同的拼接字段
                            case 1:
                                //注意referer=xxx的xxx替换成你在腾讯地图开发平台申请的key
                                url = `qqmap://map/geocoder?coord=${latitude},${longitude}&referer=xxx`;
                                break;
                            case 2:
                                url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo`;
                                break;
                            case 3:
                                url = `androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
                                break;
                            default:
                                break;
                        }
                        if (url != "") {
                            url = encodeURI(url);
                            //plus.runtime.openURL(url,function(e){})调起手机APP应用
                            plus.runtime.openURL(url, function(e) {
                                plus.nativeUI.alert("本机未安装指定的地图应用");
                            });
                        }
                    })
                } else {
                    // iOS上获取本机是否安装了百度高德地图,需要在manifest里配置
                    // 在manifest.json文件app-plus->distribute->apple->urlschemewhitelist节点下添加
                    //(如urlschemewhitelist:["iosamap","baidumap"])  
                    plus.nativeUI.actionSheet({
                        title: "选择地图应用",
                        cancel: "取消",
                        buttons: [{title: "腾讯地图"},{title: "百度地图"}, {title: "高德地图"}]
                    }, function(e) {
                        switch (e.index) {
                            case 1:
                                url = `qqmap://map/geocoder?coord=${latitude},${longitude}&referer=xxx`;
                                break;
                            case 2:
                                url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`;
                                break;
                            case 3:
                                url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
                                break;
                            default:
                                break;
                        }
                        if (url != "") {
                            url = encodeURI(url);
                            plus.runtime.openURL(url, function(e) {
                                plus.nativeUI.alert("本机未安装指定的地图应用");
                            });
                        }
                    })
                }
            },

更多推荐