uniapp 地图组件(map)的使用总结

这段时间在开发uniapp的时候使用到map组件 
总结一下本次在uniapp中使用map遇到的一些问题

文章分别是基础 定位图标  获取自身经纬度 通过经纬度获取当时城市信息

首先先看成品

废话不多说,直接开始。

首先引入map组件 

<template>
    <view class="content">
      <map style="width: 100%; height: 90vh;" :layer-style='5'  :style="{height:mapheight}" :show-location='true'  :latitude="latitude" :longitude="longitude" :markers="marker" :scale="scale"  @markertap="markertap"   @callouttap='callouttap'>
    
       </map>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                        latitude:23.106574, //纬度
                        longitude:113.324587,//经度
                        scale:13,//缩放级别
                        bottomData:false,
                        marker: [
                                            {
                                            id:0,
                                            latitude: 23.13065,//纬度
                                            longitude: 113.3274,//经度
                                            iconPath: '',    //显示的图标        
                                            rotate:0,   // 旋转度数
                                            width:20,   //宽
                                            height:30,   //高
                                                //   title:'我在这里',//标注点名
                                            alpha:0.5,   //透明度
                                            callout:{//自定义标记点上方的气泡窗口 点击有效  
                                            content:'天宝大厦',//文本
                                            color:'#ffffff',//文字颜色
                                            fontSize:14,//文本大小
                                            borderRadius:15,//边框圆角
                                            borderWidth:'10',
                                            bgColor:'#e51860',//背景颜色
                                            display:'ALWAYS',//常显
                                            },
                                            },
                                            {
                                                    id:1234597,
                                                    latitude:  23.106574,//纬度
                                                    longitude: 113.324587,//经度
                                                    iconPath: '',    //显示的图标        
                                                    rotate:0,   // 旋转度数
                                                    width:20,   //宽
                                                height:30,   //高
                                            //  title:'我在这里',//标注点名
                                                    alpha:0.5,   //透明度
                                                //      label:{//为标记点旁边增加标签   //因背景颜色H5不支持
                                                //   color:'red',//文本颜色
                                                //      },
                                                    callout:{//自定义标记点上方的气泡窗口 点击有效  
                                                content:'广州塔',//文本
                                                color:'#ffffff',//文字颜色
                                                fontSize:14,//文本大小
                                                borderRadius:15,//边框圆角
                                                borderWidth:'10',
                                                bgColor:'#e51860',//背景颜色
                                                display:'ALWAYS',//常显
                                                },
                                            },
                                            {
                                                    id:2,
                                                    latitude:  23.1338,//纬度
                                                    longitude: 113.33052,//经度
                                                    iconPath: '',    //显示的图标        
                                                    rotate:0,   // 旋转度数
                                                  width:20,   //宽
                                                    height:30,   //高
                                                    alpha:0.5,   //透明度
                                            callout:{//自定义标记点上方的气泡窗口 点击有效  
                                                content:'德隆大厦',//文本
                                                color:'#ffffff',//文字颜色
                                                fontSize:14,//文本大小
                                                borderRadius:15,//边框圆角
                                                borderWidth:'10',
                                                bgColor:'#e51860',//背景颜色
                                                display:'ALWAYS',//常显
                                                },
                                            },
                                                {
                                                    id:3,
                                                    latitude:  23.136455,//纬度
                                                    longitude: 113.329002,//经度
                                                    iconPath: '',    //显示的图标        
                                                    rotate:0,   // 旋转度数
                                                        width:20,   //宽
                                                        height:30,   //高
                                                        alpha:0.5,   //透明度
                                                    callout:{//自定义标记点上方的气泡窗口 点击有效  
                                                    content:'羊城国际商贸中心',//文本
                                                    color:'#ffffff',//文字颜色
                                                    fontSize:14,//文本大小
                                                    borderRadius:15,//边框圆角
                                                    borderWidth:'10',
                                                    bgColor:'#e51860',//背景颜色
                                                    display:'ALWAYS',//常显
                                                    },
                                                },
                                            {
                                                    id:4,
                                                    latitude:  23.224781,//纬度
                                                    longitude: 113.293911,//经度
                                                    iconPath: '',    //显示的图标        
                                                    rotate:0,   // 旋转度数
                                                  width:20,   //宽
                                                    height:30,   //高
                                                    alpha:0.5,   //透明度
                                                callout:{//自定义标记点上方的气泡窗口 点击有效  
                                                    content:'天瑞广场A座',//文本
                                                    color:'#ffffff',//文字颜色
                                                    fontSize:16,//文本大小
                                                    borderRadius:15,//边框圆角
                                                    borderWidth:'12',
                                                    bgColor:'#e51860',//背景颜色
                                                    display:'ALWAYS',//常显
                                                },
                                                },
                                            { 
                                                        id:5,
                                                        latitude:  23.072726,//纬度
                                                        longitude: 113.277921,//经度
                                                        iconPath: '',    //显示的图标        
                                                        rotate:0,   // 旋转度数
                                                width:20,   //宽
                                                    height:30,   //高
                                                    alpha:0.5,   //透明度
                                            callout:{//自定义标记点上方的气泡窗口 点击有效  
                                                    content:'大米和小米儿童康复(广州盈丰)中心',//文本
                                                    color:'#ffffff',//文字颜色
                                                    fontSize:14,//文本大小
                                                    borderRadius:15,//边框圆角
                                                    borderWidth:'8',
                                                    bgColor:'#e51860',//背景颜色
                                                    display:'ALWAYS',//常显
                                                },
                                                },
                                        ],
            }
            },
        onLoad() {

        },
        computed:{
                    mapheight(){
                        let data =''
                        if(this.bottomData){
                            if(this.upTop){
                                data ='50px'
                            }else{
                                data ='200px'
                            }
                        }else{
                            data ='90vh'
                        }
                        return data
                    },
                    coverbottom(){
                        let data =''
                        if(this.bottomData){
                            data ='20rpx'
                        }else{
                            data ='100rpx'
                        }
                        return data
                    }
                },
        methods:{
                //地图点击事件
            markertap(e) {
                console.log("===你点击了标记点===",e)
                },
            //地图点击事件
            callouttap(e){
                console.log('地图点击事件',e)
        }
        }
    }
</script>

 得到的样式是这样

 这里只给了两个回调 有更多需求可以去uniapp中搜索 map | uni-app官网

定位图标

 查了一下官方文档,发现官方文档中并没有关于定位的写法 ,没办法只能自己手写一个了。

大概是这样的。

<template>
		<view class="page-section page-section-gap map-container">
					<map style="width: 100%; height: 90vh;" :layer-style='5'  :style="{height:mapheight}" :show-location='true'  :latitude="latitude" :longitude="longitude" :markers="marker" :scale="scale"  @markertap="markertap"   @callouttap='callouttap'>
						<cover-view class="cover-view" :style='{bottom:coverbottom}' @click="onControltap">
							<cover-image class="cover-image" @click="play" src="@/static/ditudingwei.png"></cover-image>
							<cover-view>
									定位
							</cover-view>
					</cover-view>	
			</map>
		</view>
</template>
<script>
	export default {
		data() {
			return {
						latitude:23.106574, //纬度
						longitude:113.324587,//经度
						scale:13,//缩放级别
						bottomData:false,
						marker: [
											{
											id:0,
											latitude: 23.13065,//纬度
											longitude: 113.3274,//经度
											iconPath: '',    //显示的图标        
											rotate:0,   // 旋转度数
											width:20,   //宽
											height:30,   //高
												//   title:'我在这里',//标注点名
											alpha:0.5,   //透明度
											callout:{//自定义标记点上方的气泡窗口 点击有效  
											content:'天宝大厦',//文本
											color:'#ffffff',//文字颜色
											fontSize:14,//文本大小
											borderRadius:15,//边框圆角
											borderWidth:'10',
											bgColor:'#e51860',//背景颜色
											display:'ALWAYS',//常显
											},
											},
											{
													id:1234597,
													latitude:  23.106574,//纬度
													longitude: 113.324587,//经度
													iconPath: '',    //显示的图标        
													rotate:0,   // 旋转度数
													width:20,   //宽
												height:30,   //高
											//  title:'我在这里',//标注点名
													alpha:0.5,   //透明度
												//      label:{//为标记点旁边增加标签   //因背景颜色H5不支持
												//   color:'red',//文本颜色
												//      },
													callout:{//自定义标记点上方的气泡窗口 点击有效  
												content:'广州塔',//文本
												color:'#ffffff',//文字颜色
												fontSize:14,//文本大小
												borderRadius:15,//边框圆角
												borderWidth:'10',
												bgColor:'#e51860',//背景颜色
												display:'ALWAYS',//常显
												},
											},
											{
													id:2,
													latitude:  23.1338,//纬度
													longitude: 113.33052,//经度
													iconPath: '',    //显示的图标        
													rotate:0,   // 旋转度数
						  						width:20,   //宽
													height:30,   //高
													alpha:0.5,   //透明度
											callout:{//自定义标记点上方的气泡窗口 点击有效  
												content:'德隆大厦',//文本
												color:'#ffffff',//文字颜色
												fontSize:14,//文本大小
												borderRadius:15,//边框圆角
												borderWidth:'10',
												bgColor:'#e51860',//背景颜色
												display:'ALWAYS',//常显
												},
											},
												{
													id:3,
													latitude:  23.136455,//纬度
													longitude: 113.329002,//经度
													iconPath: '',    //显示的图标        
													rotate:0,   // 旋转度数
														width:20,   //宽
														height:30,   //高
														alpha:0.5,   //透明度
													callout:{//自定义标记点上方的气泡窗口 点击有效  
													content:'羊城国际商贸中心',//文本
													color:'#ffffff',//文字颜色
													fontSize:14,//文本大小
													borderRadius:15,//边框圆角
													borderWidth:'10',
													bgColor:'#e51860',//背景颜色
													display:'ALWAYS',//常显
													},
												},
											{
													id:4,
													latitude:  23.224781,//纬度
													longitude: 113.293911,//经度
													iconPath: '',    //显示的图标        
													rotate:0,   // 旋转度数
						  						width:20,   //宽
													height:30,   //高
													alpha:0.5,   //透明度
												callout:{//自定义标记点上方的气泡窗口 点击有效  
													content:'天瑞广场A座',//文本
													color:'#ffffff',//文字颜色
													fontSize:16,//文本大小
													borderRadius:15,//边框圆角
													borderWidth:'12',
													bgColor:'#e51860',//背景颜色
													display:'ALWAYS',//常显
												},
												},
											{ 
														id:5,
														latitude:  23.072726,//纬度
														longitude: 113.277921,//经度
														iconPath: '',    //显示的图标        
														rotate:0,   // 旋转度数
												width:20,   //宽
													height:30,   //高
													alpha:0.5,   //透明度
											callout:{//自定义标记点上方的气泡窗口 点击有效  
													content:'大米和小米儿童康复(广州盈丰)中心',//文本
													color:'#ffffff',//文字颜色
													fontSize:14,//文本大小
													borderRadius:15,//边框圆角
													borderWidth:'8',
													bgColor:'#e51860',//背景颜色
													display:'ALWAYS',//常显
												},
												},
										],
			}
			},
		onLoad() {

		},
		computed:{
					mapheight(){
						let data =''
						if(this.bottomData){
							if(this.upTop){
								data ='50px'
							}else{
								data ='200px'
							}
						}else{
							data ='90vh'
						}
						return data
					},
					coverbottom(){
						let data =''
						if(this.bottomData){
							data ='20rpx'
						}else{
							data ='100rpx'
						}
						return data
					}
				},

		methods:{
				//地图点击事件
			markertap(e) {
				console.log("===你点击了标记点===",e)
				},
			//地图点击事件
			callouttap(e){
				console.log('地图点击事件',e)
		}
		}
	}
</script>
<style lang='less' scoped>
		.map-container {
		position: relative;
		overflow: hidden;
		.cover-view {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			width: 80rpx;
			height: 80rpx;
			color: #484848;
			background-color: #fff;
			background-size: 120rpx 120rpx;
			background-position: center center;
			position: absolute;
			bottom: 100rpx;
			right: 32rpx;
		}
		.cover-image{
			display: inline-block;
			width: 30rpx;
			height: 30rpx;
		}
		}
</style>

 获取自身经纬度

进入页面拿到用户自身的经纬度

在onShow中输入

onShow() {
				uni.getLocation({
								geocode:true,
								type: 'wgs84',
								success: (res) => {
									console.log(res,'获取当前位置')
									
								},
								address:(res) =>{
									console.log('address',res)
								}
				});

 需要打开manifest.json

 如果从来没配置过appld请先配置在进行操作

 

然后重新编译就会出现

允许之后就可以拿到经纬度信息

 然后可以将经纬度信息赋值给data中的latitude longitude

	onShow() {
				uni.getLocation({
								geocode:true,
								type: 'wgs84',
								success: (res) => {
									console.log(res,'获取当前位置')
									this.longitude =res.longitude
									this.latitude = res.latitude
									
								},
								address:(res) =>{
									console.log('address',res)
								}
				});
		},

通过经纬度 获取当前城市信息

首先需要进入腾讯位置服务 /控制台/应用管理/我的应用/添加key选择webServiceApi

 然后去小程序开发管理/开发设置/服务器域名/request合法域名后面新增

https://apis.map.qq.com;

 然后下载 

https://mapapi.qq.com/web/miniprogram/JSSDK/qqmap-wx-jssdk1.1.zip

 引入

在ohshow中使用

var qqmapsdk
			// 实例化API核心类
			qqmapsdk = new QQMapWX({
				key: '创建的key'
			});
			qqmapsdk.reverseGeocoder({
			location:{
				latitude:this.latitude,
				longitude:this.longitude
			},
			success:(res)=>{
				console.log('reverseGeocoder',res)
			},
			fail:(err)=>{
				console.log('reverseGeocoder',err)
			}
		})

这样就可以通过自身的经纬度获取到当前所在的详细信息

更多地图事件可以查询官网腾讯位置服务 - 立足生态,连接未来

关于地图气泡弹窗在真机不显示或者显示颜色不明显的情况,你可以使用在callout中使用padding

这样就可以显示颜色了

在uniapp中使用地图大概就这些

如果你还有什么问题你可以选择↓↓↓

微信公众号搜索 海海学前端 来了解更多

  • 30
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
uniapp地图组件是一个用于展示地图组件,它是使用vue.js开发的一个前端框架。开发者可以使用一套代码编写应用,并发布到多个平台,包括iOS、Android、Web以及各种小程序和快应用平台。 地图组件使用腾讯地图来展示地图,并且可以通过定位API(uni.getLocation)获取坐标信息。在uniapp使用地图组件时,需要注意经纬度必填,如果不填,则默认值是北京的经纬度。 使用uniapp地图组件的基本使用方法是将map组件添加到页面中,并设置相应的属性。通过设置属性,可以实现地图的缩放、中心点位置、标记点等功能。具体的属性设置可以参考uniapp的官方文档。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniappmap地图组件介绍](https://blog.csdn.net/weixin_67490903/article/details/126013460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [uniappmap组件的详细总结,含文字气泡、点击定位等(附全部源码)](https://blog.csdn.net/weixin_56740218/article/details/125612958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海海呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值