uni-app中使用map

简介: uni-app中使用map

uni-app中使用地图显示当前的位置

我们现在的需求是,显示用户在地图上所处的位置。
有的小伙伴可能会说,这个是不是需要接入第三方的地图。
其实是不需要的,从目前这个需求来看。
我们只需要引入uni-app提供的内置组件 map 。
然后设置经纬度以及缩放大小就行
下面我们就来简单的演示一下

使用 map 组件显示某一个位置

<template>
    <view>
        <view class="page-body">
            <view class="page-map-box">
                <map style="width: 750rpx; height: 600rpx;" 
                  :latitude="latitude" 
                  :longitude="longitude" 
                  :scale="scale"></map>
            </view>
        </view>
    </view>
</template>
<script>
export default {
    data(){
        return {
            msg:'12',
            latitude: 30.572269, //纬度
            longitude: 104.066541, //经度
            scale: 14, //地图缩放程度
        }
    }
}
</script>
<style scoped>
</style>

需要注意的点

第1点:<map> 组件的宽/高推荐写直接量,比如:750rpx,不要设置百分比值。
我尝试过写百分比也是可以正常显示的。
在写百分比的时候注意父盒子的宽高,如果父盒子没有设置宽高,会导致地图显示不出来。
既然官方说了不要写百分比咋们就不要写了。
第2点:谷歌地图使用 wgs84 坐标,其他地图使用 gcj02 坐标,用错坐标类型会显示偏移。

如何显示当前用户所在的位置

如果要显示用户当前所在位置。
我们需要借助一个api来获取。
uni.getLocation(options)获取当前的地理位置、速度
在获取之前,我们需要配置一下。
在HBuilder中的 uniapp项目下点击配置文件manifest.json。
选择微信小程序。填写【位置接口】描述。
或者在unpackage/dist/dev/mp-weixin/app.json中加入如下配置。
配置好后,在小程序的开发工具中看是否被正确编译了。
因为有些时候会出现丢死,此时需要再次重新写入
{
  "pages": [
    "pages/index/index"
  ],
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "uni-app",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8"
  },
  "permission": {
    "scope.userLocation": {
      //描述一下你需要这个接口的原因,这个是必须的要写的。
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  },
 // 你调用的方法,这个也是必须的,否者会出现调用失败
 "requiredPrivateInfos": ["getLocation", "chooseLocation"],
  "usingComponents": {}
}

uni.getLocation({})获取当前的地理位置、速度

<template>
  <view>
    <view class="page-body">
      <view class="page-map-box">
        <map style="width: 750rpx; height: 600rpx;" 
          :latitude="latitude" 
          :longitude="longitude" 
          :scale="scale"></map>
      </view>
      <view class="btn-position">
       <button type="default" @tap="getLocationTap">获取定位</button>
      </view>
    </view>
  </view>
</template>
<script>
export default {
  data(){
    return {
      latitude:'' , //纬度
      longitude: '', //经度
      scale: 14, //地图缩放程度
    }
  },
  methods:{
    getLocationTap(){
      let that=this;
      uni.getLocation({ 
        type: 'gcj02', 
        success: function (res) { 
          console.log('经度:' + res.longitude);
          console.log('纬度:' + res.latitude); 
          that.latitude = res.latitude
          that.longitude= res.longitude
        }, 
        fail: function (res) { 
          console.log('获取位置信息失败', res); 
        } 
      })
    }
  }
}
</script>
<style scoped>
  .page-map-box{
    width: 750rpx; height: 600rpx;
  }
  .btn-position{
    margin-top: 10rpx;
  }
</style>

标记当前这个点

如果要标记当前的这个点,需要我们借助markers属性。
它接受一个数组,这个数组就是要标记的点。
其中id需要传递,否者会有提示信息。
iconPath是标记的图标地址。可以去阿里矢量图标库中下载一个图片。
width,height是这个图标的大小。
latitude,longitude是经纬度
<template>
<view>
    <view class="page-body">
        <view class="page-map-box">
            <map style="width: 750rpx; height: 600rpx;" 
              :latitude="latitude" 
              :longitude="longitude" 
              :scale="scale"
              :markers="markers"
             ></map>
        </view>
      <view class="btn-position">
         <button type="default" @tap="getLocationTap">获取定位</button>
      </view>
    </view>
</view>
</template>
<script>
export default {
    data(){
        return {
            latitude: '',
            longitude: '',
            scale: 14, // 设置地图的缩放级别
            markers: [ // 设置标记点
                {  
                    id:1001,
                    width:50,
                    height:50,
                    latitude: this.latitude*1,
                    longitude: this.longitude*1,
                    iconPath: '../../static/weizhi.png',
                },
           ],
        }
    },
    methods:{
        getLocationTap(){
        let that=this;
        uni.getLocation({ 
          type: 'gcj02', 
          success: function (res) { 
            console.log('经度:' + res.longitude);
            console.log('纬度:' + res.latitude); 
            that.latitude = res.latitude
            that.longitude= res.longitude
          }, 
          fail: function (res) { 
            console.log('获取位置信息失败', res); 
          } 
        })
        }
    }
}
</script>
<style scoped>
  .page-map-box{
    width: 750rpx; height: 600rpx;
  }
  .btn-position{
    margin-top: 10rpx;
  }
</style>

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
|
小程序 定位技术 API
uni-app 微信小程序中关于 map 地图使用案例分享
uni-app 微信小程序中关于 map 地图使用案例分享
uni-app 微信小程序中关于 map 地图使用案例分享
|
3月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
779 7
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
789 1
|
4天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
3天前
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
鸿蒙语言开发 几十套鸿蒙ArkTs app毕业设计及课程作业
13 1
|
12天前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
64 11
|
9天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
15天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
76 6
|
16天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
51 3