uniapp使用地图

uniapp使用地图

使用内置地图查看定位

效果
在这里插入图片描述
实现

<!-- 方法一:点击小程序map地图插件跳转到app中打开 -->
<map @click="mapFun" class='map' :latitude="latitude" :longitude="longitude" :markers="covers" />
 
<!-- 方法二:点击button等按钮打开 -->
<button type="default" @click="mapFun">唤醒题图</button>

<!-- js中 -->
// 高德地图、腾讯、百度等地图中打开
data(){
    return{
	    latitude: 39.909,
		longitude: 116.39742,
		covers: [{
			latitude: 39.909,
			longitude: 116.39742,
			width:'50rpx'
		}]
    }
},
methods:{
    mapFun() {
	    uni.openLocation({
		latitude: this.latitude,, //纬度 - 目的地/坐标点
 		longitude: this.longitude,, //经度 - 目的地/坐标点
		name: "电脑城",
		address: "重庆九龙坡"
	    });
   }
}

<map>注意事项:
使用map地图插件时,具体注意事项及使用方法,参考 uniapp地图组件官网:
https://uniapp.dcloud.net.cn/component/map.html#map-地图组件
1. 组件的宽/高推荐写直接量,比如:750rpx,不要设置百分比值。
2.谷歌地图使用 wgs84 坐标,其他地图使用 gcj02 坐标,用错坐标类型会显示偏移。
3.App平台 layer-style 属性需要在地图服务商后台创建,值设置为高德后台申请的字符串https://developer.amap.com/api/android-sdk/guide/create-map/custom
4.
组件在不同平台的底层引擎是不同的:微信小程序为腾讯地图;H5为腾讯地图或谷歌地图;App、支付宝(中国大陆地区版本)小程序为高德地图;百度小程序、快应用为百度地图。app-vue也可以使用百度地图,在manifest中配置,打包后生效,但app-nvue只支持高德地图。另外选择地图、查看地图位置的API也仅支持高德地图。App端如无特殊必要,建议使用高德地图。
5.map 组件默认的api是参考微信小程序的,如需要使用plus.map,可以通过$getAppMap获取原生地图对象。
注意nvue的map组件不是plus.map对象,无法使用$getAppMap
https://uniapp.dcloud.net.cn/api/location/map.html
6.
组件默认为国测局坐标,调用 uni.getLocation 返回结果传递给 组件时,需指定 type 为 gcj02。

uniapp打开第三方地图

打开第三方地图应用需传入 latitude 和 longitude ,name
直接上代码!!!

toMapAPP(latitude, longitude, name) {
	let url = "";
    if (plus.os.name == "Android") { //判断是安卓端
        plus.nativeUI.actionSheet({ //选择菜单
            title: "选择地图应用",
            cancel: "取消",
            buttons: [{
                title: "腾讯地图"
            }, {
                title: "百度地图"
            }, {
                title: "高德地图"
            }],
        }, 
        function(e) {
            console.log(e);
            switch (e.index) {
                //下面是拼接url,不同系统以及不同地图都有不同的拼接字段
                case 1:
                //注意referer=xxx的xxx替换成你在腾讯地图开发平台申请的key

                    url=`qqmap://map/geocodercoord=${latitude},${longitude}&referer=I47BZ-QPEWO-HIPWK-SA5DW-F6ZRE-O2FCO`;
                    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"])
		 //uniapp 里配置
		 //"ios" : {
		 	// "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=I47BZ-QPEWO-HIPWK-SA5DW-F6ZRE-O2FCO`;
					break;
				case 2:
					url =                             `baidumap://map/markerlocation=${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("本机未安装指定的地图应用");
				});
			}
		})
	}
}

其他使用可参考
https://blog.csdn.net/m0_56344602/article/details/123640217?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167214148016800186599855%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167214148016800186599855&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-123640217-null-null.142^v68^wechat,201^v4^add_ask,213^v2^t3_control2&utm_term=uniapp%E5%9C%B0%E5%9B%BE&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_50343572/article/details/116483501?ops_request_misc=&request_id=&biz_id=102&utm_term=uniapp%E5%9C%B0%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-116483501.nonecase&spm=1018.2226.3001.4187

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 是一种基于 Vue.js 的跨平台开发框架,它可以帮助开发者在不同的移动操作系统上快速构建应用程序。要在 UniApp使用腾讯地图,你可以按照以下步骤进行: 1. 在腾讯地图开放平台(https://lbs.qq.com/)上注册并创建应用,获取 AppKey。 2. 在 UniApp 项目的 manifest.json 文件中配置腾讯地图 SDK 的引入。示例代码如下: ``` "mp-weixin": { "plugins": { "tencentMapSDK": { "version": "1.3.2", "provider": "wxa8d7e593b2c3aXXX" } } }, "app-plus": { "plugins": { "tencentMapSDK": { "version": "1.3.2", "provider": "wxa8d7e593b2c3aXXX" } } } ``` 其中,"provider" 后面的值需要替换为你在腾讯地图开放平台中创建应用后获取到的 AppKey。 3. 在需要使用腾讯地图的页面中引入 SDK 并调用相关接口。示例代码如下: ``` <template> <view> <t-map id="map" :longitude="longitude" :latitude="latitude"></t-map> </view> </template> <script> export default { data() { return { longitude: 113.324520, latitude: 23.099994 } }, onLoad() { uni.getLocation({ success: (res) => { this.longitude = res.longitude; this.latitude = res.latitude; } }) } } </script> ``` 在这个示例中,在 onLoad 方法中通过 uni.getLocation 获取当前位置的经纬度,并将其赋值给 t-map 组件的 longitude 和 latitude 属性,实现在地图上展示当前位置。 以上是一个简单的示例,具体使用腾讯地图的功能,你还可以参考腾讯地图 SDK 的文档进行更多的调用和配置。希望对你有帮助!如有问题,请随时追问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值