微信小程序2-地图显示和地图标记

一、index修改页面,让页面能够显示地图和一个添加标记的按钮。

index.wxml

html 复制代码
<scroll-view class="scrollarea" scroll-y type="list">
  <view class="index_container">
    <map id="map" style="width: 100%; height: 100%;" bindmarkertap="markertap" bindregionchange="regionchange" markers="{{markers}}">
      <button type="primary" bindtap="addMarker">添加</button>
    </map>
  </view>
</scroll-view>

scrollarea和index_container都是容器,为了布局而用的。内容主要有两个元素map和button,

其中我把button放在了map元素里面是为了实现,地图全屏,按钮在地图上的效果。

map元素:

style:设置元素占用空间,是相对于index_container容器的比例,因为index_container包含mapy元素。

bindmarkertap:定义一个回调函数,当点击地图中某个标记点的时候触发该回调函数,可用于处理标记点的信息。

regionchange:定义一个回调函数,当地图手动缩放的时候触发该回调函数,可用于处理地图视野变化的动作。

markers:地图添加标记的数组,下文细说。

button元素:

bindtap:按钮的回调函数。

还有按钮的大小、颜色、透明度等可以修改

还可以写成<button class="format" type="primary" bindtap="addMarker">添加</button>

format中定义按钮的样式,这种方法后面会细说。

二、修改index布局格式

index.wxss

html 复制代码
page {
  height: 100vh;
  display: flex;
  flex-direction: column;
}
.scrollarea {
  flex: 1;
  overflow-y: hidden;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
}
.index_container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: left;
  margin-left: 0rpx;
  justify-content: space-between;
  padding: 0 0;
  box-sizing: border-box;
}

都是一些配置参数,通过名字即可了解意思,看不懂的百度搜索,基本都能搜到。

三、代码逻辑实现

javascript 复制代码
Page({
  data: {        // 页面内全局变量,可通过this.data.markers使用,index.wxml中可通过{{markers}}使用
    markers: []
  },

  // 监听页面初次渲染完成
  onReady: function (e) {
    //this.requestLocationPermission()
    this.mapCtx = wx.createMapContext('map', this) // 创建地图上下文环境变量
    var that = this;

    // 获取设备当前中心定位
    this.mapCtx.getCenterLocation({
      success: function (res) {
        that.mapCtx.moveToLocation({ // 将地图中心移动至当前定位
          longitude: Number(res.longitude),
          latitude: Number(res.latitude),
          // longitude: Number(118.796000),
          // latitude: Number(32.058300),
        })
      }
    })
  },
  markertap: function (e) {
    // 处理点击标记点事件,可以在这里展示照片和文字信息
  },
  regionchange: function (e) {
    // 处理地图视野变化事件
  },
  addMarker: function () {
    // 添加标记点
    var that = this;

    this.mapCtx.getCenterLocation({
      success: function (res) {
        var markers = that.data.markers;

        console.log(res, markers);
        markers.push({
          iconPath: '/claw.png',  // 标记点图片,放在app.js同级目录下
          id: markers.length,
          latitude: res.latitude, // 标记点坐标
          longitude: res.longitude,
          title: '标记' + markers.length,
          width: 25,              // 标记点图片长、宽
          height: 25
        });
        that.setData({
          markers: markers
        });
      }
    });
  },
});

四、点击编译查看效果

默认展示如下图所示

点击"添加"按钮会在当前地图中心添加一个标记

相关推荐
知识分享小能手7 小时前
uni-app 入门学习教程,从入门到精通,uni-app 企业项目实战:鲁嗑瓜子项目开发知识点(9)
前端·javascript·学习·微信小程序·小程序·uni-app·vue
知识分享小能手7 小时前
uni-app 入门学习教程,从入门到精通,uni-app中uCharts组件学习((8)
vue.js·学习·ui·微信小程序·小程序·uni-app·echarts
社会底层无业大学生9 小时前
uniapp微信小程序简单表格展示
微信小程序·小程序·uni-app·vue·1024程序员节
從南走到北9 小时前
JAVA无人自助共享系统台球室源码自助开台约球交友系统源码小程序
java·微信·微信小程序·小程序·1024程序员节
2501_9159184113 小时前
iOS 26 查看电池容量与健康状态 多工具组合的工程实践
android·ios·小程序·https·uni-app·iphone·webview
2501_9159090614 小时前
iOS 架构设计全解析 从MVC到MVVM与使用 开心上架 跨平台发布 免Mac
android·ios·小程序·https·uni-app·iphone·webview
2501_916008891 天前
Web 前端开发常用工具推荐与团队实践分享
android·前端·ios·小程序·uni-app·iphone·webview
2501_915921431 天前
“HTTPS 个人化”实战,个人站点与设备调试的部署、验证与抓包排查方法
网络协议·http·ios·小程序·https·uni-app·iphone
菜鸟una1 天前
【微信小程序 + 消息订阅 + 授权】 微信小程序实现消息订阅流程介绍,代码示例(仅前端)
前端·vue.js·微信小程序·小程序·typescript·taro·1024程序员节
韩立学长1 天前
【开题答辩实录分享】以《租房小程序的设计和实现》为例进行答辩实录分享
java·spring boot·小程序