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

这样就可以显示颜色了

相关文章
|
1天前
|
开发框架 JSON 定位技术
uniapp中map组件动态加载marks标记
uniapp中map组件动态加载marks标记
|
1天前
|
JavaScript 前端开发 小程序
uniapp中nvue页面如何全屏,map组件如何全屏?
uniapp中nvue页面如何全屏,map组件如何全屏?
|
2天前
|
资源调度
uniapp引入vant组件库
uniapp引入vant组件库
26 11
|
2天前
|
移动开发 小程序 API
uniapp中组件库Mask 遮罩层 的使用方法
uniapp中组件库Mask 遮罩层 的使用方法
15 1
|
2天前
|
移动开发 小程序 API
uniapp组件库Card 卡片 的使用方法
uniapp组件库Card 卡片 的使用方法
13 1
|
2天前
|
移动开发 小程序 API
uniapp组件库Line 线条 的适用方法
uniapp组件库Line 线条 的适用方法
15 0
|
2天前
|
小程序
uniapp-微信小程序-上拉和下拉触底刷新
uniapp-微信小程序-上拉和下拉触底刷新
10 0
|
2天前
|
Web App开发 数据采集 移动开发
开发uniapp过程中对app、微信小程序与h5的webview调试
开发uniapp过程中对app、微信小程序与h5的webview调试
13 1
|
2天前
|
JavaScript 小程序 前端开发
小程序;vue;uniapp优缺点(各5条)
小程序;vue;uniapp优缺点(各5条)
17 1
|
2天前
|
移动开发 开发框架 小程序
UniApp与微信小程序介绍及区别
UniApp与微信小程序介绍及区别
25 0

热门文章

最新文章