小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转

是类似于小红书地图功能的需求

缺点

一个帖子只能有一个点击事件,不适合太复杂的功能,因为一个markers只有一个回调回调中只有markerId可以使用。

需求介绍

  1. 页面有地图入口,点开可打开地图界面
  2. 地图上展示命中poi的帖子。
  3. 帖子有图片,文字,用户头像以及用户名称
  4. 帖子可以自定义样式

代码

地图页面,地图相关的属性小程序文档有详细的介绍。主要使用了markers功能,可以在地图上面渲染一层view,再结和气泡属性customCallout实现。需要注意的是文档中虽然写了可以同层渲染但亲测在手机端会不显示,所以气泡结构全使用cover-的结构。

html 复制代码
<map
    id="map"
    style="width:100%;height: 100%;"
    latitude="{{latitude}}"
    scale="{{scale}}"
    longitude="{{longitude}}"
    subkey="{{mapKey}}"
    markers="{{markers}}"
    bindmarkertap="markertap"
    bindcallouttap="handleTap"
  >
  <cover-view slot="callout">
    <block wx:for="{{calloutList}}" wx:key="index">
      <cover-view class="callout" marker-id="{{item.id}}">
        <cover-image class="icon" mode="aspectFill" src="{{item.contentSummary.imageList[0].url}}" ></cover-image>
        <cover-view class="content">
          <cover-view class="title">{{item.title}}</cover-view>
          <cover-view class="user-info">
            <cover-image class="avatar" src="{{item.postUser.avatarUrl}}" mode="aspectFill"/>
            <cover-view>{{item.postUser.nickName}}</cover-view>
          </cover-view>
        </cover-view>
    </cover-view>
    </block>
  </cover-view>
</map>

js需要data中需要定义好map绑定的属性,subkey是地图的key需要自己去腾讯地图的官网申请一下。

javascript 复制代码
data: {
    latitude: 39.940115,
    scale: 17,
    longitude: 116.432503,
    subkey: config.KEY,
    // 地图标记
    markers: [],
  },
// 数据结构就不贴出来了,自己定义就可以,demoData在onload中调用以保证打开页面就能显示
demoData() {
  // 伪代码:假设从服务器获取数据,实际使用时需要传入请求参数和回调函数
  const data = wx.request();

  // 初始化地图标记和气泡列表
  const markers = []; // 地图标记
  const calloutList = []; // 气泡列表(帖子)

  // 遍历获取的数据
  data.forEach((item, index) => {
    const poiInfo = item.contentSummary.poiInfo; // 获取POI信息

    // 组装地图标记所需的参数
    const mark = {
      id: index, // 标记的唯一标识
      longitude: poiInfo.longitude, // 经度
      latitude: poiInfo.latitude, // 纬度
      iconPath: '', // 图标路径
      customCallout: { // 自定义气泡
        anchorY: 0, // 气泡的Y轴锚点
        anchorX: 0, // 气泡的X轴锚点
        display: 'ALWAYS' // 气泡显示方式,'ALWAYS'表示总是显示
      },
    };

    // 将标记添加到标记数组中
    markers.push(mark);

    // 给气泡添加唯一标识
    item.id = index;

    // 将气泡添加到气泡列表中
    calloutList.push(item);
  });

  // 更新页面数据
  this.setData({ markers, calloutList });
}

css 就正常写就行

css 复制代码
.callout {
  box-sizing: border-box;
  background-color: #fff; 
  border: 0.81px solid #CED6D9;
  border-radius: 12px;
  width: 178px;
  height: 67px;
  display: flex;
  padding: 6px;
}

.icon {
  width: 44px;
  height: 55px;
  border-radius: 8px;
}

.avatar {
  width: 16px;
  height: 16px;
  border-radius: 50%;
}

.user-info {
  font-family: 'PingFang SC';
  font-size: 12px;
  font-weight: 400;
  line-height: 12px;
  text-align: left;
  color: #000000EB;
  display: flex;
  align-items: center;
  margin-top: 2px;
}

.content {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding-left: 4px;
}

.title {
  font-size: 14px;
  font-weight: 400;
  text-align: left;
  white-space: normal;
  display: -webkit-box;
    overflow: hidden;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
  flex: 1;
}
相关推荐
m0_587383004 小时前
24小时自助健身房软硬件解决方案实战:从架构设计到部署指南
java·spring·小程序·架构·需求分析
CRMEB系统商城5 小时前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言·小程序·php
2501_916007477 小时前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
paopaokaka_luck1 天前
个人综合管理小程序(echarts数据看板、健康数据记录与趋势查看、目标拆解和进度管理、日程待办与番茄钟、习惯打卡、收支统计、个人生活记录、跨模块智能提醒)
前端·javascript·spring·小程序·数据分析·echarts·生活
m0_587383002 天前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
m0_587383002 天前
西安同城拼车软件开发实战指南:从零搭建高效系统
人工智能·小程序·数据挖掘·系统架构·需求分析
weixin_lynhgworld2 天前
抽取类盲盒小程序的五条合规红线意味着什么?
小程序
现任明教教主~2 天前
运营级多门店洗车贴膜汽车在线核销保养服务系统洗车预约洗车系统消费分佣扫码核销系统
微信小程序·小程序·汽车
小小王app小程序开发2 天前
盲盒微信小程序开发实战:架构、核心难点与实现方案
小程序