小程序地图插入图标后 怎么实现点击图标弹出窗口

news2025/2/21 20:52:50

1问题描述

本次博客的要解决的问题是:小程序地图插入图标后 怎么实现点击图标弹出窗口

如图:




8b6f3821564c12e0f2c5abf5927c54d8.png

2算法描述点击标记点获取数据

   想要在地图等页面上显示弹窗,是使用的是marke的方法,点击标记点获取数据

先在wxml里写好布局文件

<view  class="detail-card-body1" hoverClass="hover"   

     bindtap="toCase1"  data-id="{{ingma.id}}">

        <view class="detail-card-title1"  >{{ingma.name}}view>

        <view class="detail-card-distance" >

      距你{{dis}}米

        view>

          <view class="detail-card-distance ">

                <view class="detail-card-audio-second ">

                  点击查看详情

                view>

          view>

        <view class="detail-card-des1">{{detailCardInfo.cardDesc}}view>

    view>


点击事件用bindtap,toCase1是需要在.js文件里写出的点击事件方法;bindtap="toCase1"是布局文件中删除按钮与.js文件里的删除方法绑定。下面看下.js里面跳转方法,弹窗是在点击图标时候弹出的,所以写在点击事件里面

Page({

    data:{

        latitude: 32.739668,//默认定位纬度

        longitude: 103.834568,

        showDialog:false,

        mapId:"myMap",//wxml中的map的Id值

        flag:true,

        currentItemId:0,

        isSelectedBuildType: 0,

        islocation: true,

        ingma:[],

        poiT:[

          { 

            name:'游览点',

            fid:'1',

            scale:'15',

            latitude: "32.739668",   

            longitude: "103.834568", 

            markers:[]

          } ,{ 

          name:'科普点',

          fid:'2',

          scale:'14.5',

            latitude: "32.722861",   

            longitude: "103.832321", 

          markers:[]

        },{ 

          name:'售票处',

          fid:'3',

          scale:'15.9',

          latitude: "32.748993",   

          longitude: "103.822896", 

          markers:[]

       },{ 

        name: '卫生间',

        fid:'4',

        scale:'16',

        latitude: "32.742095",   

        longitude: "103.834076", 

        markers:[]

       }

        ],

    onReady: function (e) {

      // 使用 wx.createMapContext 获取 map 上下文 

      this.mapCtx = wx.createMapContext('myMap')

    },

    onLoad: function() { 

        var that = this; 

       //  获取当前定位的经纬度信息

       wx.showLoading({

         title:"定位中",

         mask:true

       })

       wx.getLocation({

         type: 'gcj02', //返回可以用于wx.openLocation的经纬度

         altitude:true,//高精度定位

         //定位成功,更新定位结果

         success: function (res) {

           var latitude = res.latitude;

           var longitude = res.longitude;

           that.setData({

              centerX: longitude,

              centerY: latitude,

           });

         },

         //定位失败回调

         fail:function(){

           wx.showToast({               

             title:"定位失败",

             icon:"none"

           })

         },

         complete:function(){

           //隐藏定位中信息进度

           wx.hideLoading()

         }

       })

       }, 

 //点击其他位置关闭弹窗

  close(){

    this.setData({

      flag:true,

      locat:false,

    })

  },

//加载

onLoad:function(e){

    //添加markers

    var that = this

    wx.request({

      url: 'http://36.133.200.169:8088/public/spg/poi/list',

      data: {

      },

      header: {'content-type':'application/json'},

      method: 'POST',

      dataType:'json',

      responseType: 'text',

      success: (result) => {

          for (var i = 0; i < result.data.data.length; i++) {

            var poiType = result.data.data[i].poiType

            if ( poiType == '游览点'){

            let mark = "poiT[0].markers[" + i + "]";

            that.setData({

              [mark]:

              {

                id: i, 

                iconPath: "/image/zoo.png", 

                latitude: result.data.data[i].latitude, 

                longitude: result.data.data[i].longitude, 

                width: 50,

                height: 50,

                name:result.data.data[i].name,

                poiType:result.data.data[i].poiType,

                label:{

                  content:result.data.data[i].name,

                  fontsize:15,

                  borderRadius:10,

                  bgColor:'#fff',

                  anchorX:-35,

                  anchorY:3,

                  padding:5

                }

              },

            }

            )} else if ( poiType == '科普点'){

              let mark = "poiT[1].markers[" + i + "]";

                that.setData({

                [mark]:

                {

                  id: i, 

                  iconPath: "/image/kepu.png", 

                  latitude: result.data.data[i].latitude, 

                  longitude: result.data.data[i].longitude, 

                  width: 50,

                  height: 50,

                  name:result.data.data[i].name,

                  poiType:result.data.data[i].poiType,

                  label:{

                    content:result.data.data[i].name,

                    fontsize:15,

                    borderRadius:10,

                    bgColor:'#fff',

                    anchorX:-35,

                    anchorY:3,

                    padding:5

                  }

                },

              }

              )} else if ( poiType == '售票处'){

              let mark = "poiT[2].markers[" + i + "]";

              that.setData({

                [mark]:

                {

                  id: i, 

                  iconPath: "/image/yld.png", 

                  latitude: result.data.data[i].latitude, 

                  longitude: result.data.data[i].longitude, 

                  width: 50,

                  height: 50,

                  name:result.data.data[i].name,

                  poiType:result.data.data[i].poiType,

                  label:{

                    content:result.data.data[i].name,

                    fontsize:15,

                    borderRadius:10,

                    bgColor:'#fff',

                    anchorX:-35,

                    anchorY:3,

                    padding:5

                  }

                },

              }

              )} else{

                let mark = "poiT[3].markers[" + i + "]";

                that.setData({

                  [mark]:

                  {

                    id: i, 

                    iconPath: "/image/cs.png", 

                    latitude: result.data.data[i].latitude, 

                    longitude: result.data.data[i].longitude, 

                    width: 50,

                    height: 50,

                    name:result.data.data[i].name,

                    poiType:result.data.data[i].poiType,

                    label:{

                      content:result.data.data[i].name,

                      fontsize:15,

                      borderRadius:10,

                      bgColor:'#fff',

                      anchorX:-35,

                      anchorY:3,

                      padding:5

                    }

                  },

                }

                )} 

          }

        },

  })

  },

  //点击标记点获取数据

   markertap(res){

    let self = this

    console.log(res)

    var mark=res.currentTarget.dataset;

    console.log(mark)

    var len = Object.keys(mark).length//获取JSON长度;

    var markerId=res.markerId;

    console.log(markerId)

    var currentItemId= this.data.currentItemId

    console.log(currentItemId)

    var result = this.data.poiT[currentItemId].markers;

    console.log(result)

    var id=markerId

      wx.getLocation({

        type: 'gcj02',

        success: (e) => {

          var lat0 = e.latitude

          var lng0 = e.longitude

          var lat = result[markerId].latitude

          var lgt =result[markerId].longitude

          var dis =Math.floor(comm.GetDistance(lng0,lat0,lgt,lat));

          console.log('距你'+dis+'米')

          // console.log(result[markerId])

          self.setData({

            ingma:result[markerId],

            dis:dis,

          })

        this.setData({

          flag:false,

          locat:true

        })

    },

  })

  },

toggleDialog: function () {

  this.setData({

    showDialog: false,

  })

},

//跳转

  toCase1(e){

    console.log(e.currentTarget.dataset.id)

    const id=e.currentTarget.dataset.id

          wx.navigateTo({

            url: '/packageA/page/case1/case1?id='+id,

          })

  },

})

3 结语

本次解决了小程序地图插入图标后 怎么实现点击图标弹出窗口的问题。这里使用到的是小程序自定义map组件标记点marker,这次只是介绍了marker的一个用法,如果后续有需要,会再出一期关于小程序地图的学习与使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可强占RCU

可强占RCU前言前言 RCU机制属于无锁编程的一种&#xff0c;在访问读端临界区时不需要加锁&#xff0c;故不存在上面提到的锁的问题&#xff0c;所以拥有极好的扩展性&#xff0c;且可以多个读者同时存在。那为什么不用RCU锁取代其他锁呢&#xff1f;前面说到读端不用加锁&…

光纤耦合装置的公差分析

摘要 在现代光学中&#xff0c;光纤存在于各种光学系统中&#xff0c;能够将多少光耦合到光纤中一直是人们关注的问题。耦合效率对系统的对准十分敏感&#xff0c;特别是对于芯径相对较小的单模光纤。在本例中&#xff0c;我们选择了一个设计良好的光纤耦合透镜&#xff0c;并根…

ARM异常处理(异常源的分类、异常的响应流程)

目录 一、异常的概念 1、什么是异常&#xff1f; 2、处理异常时&#xff0c;处理器要考虑哪些问题&#xff1f; 二、ARM异常源 1、异常源的分类 2、异常模式 三、ARM异常响应 1、CPSR寄存器内容备份&#xff08;自动执行&#xff09; 2、修改CPSR的值&#xff08;自动…

广告倒排服务极致优化

作者 | XY 导读 漏斗优化是检索系统不变的话题&#xff0c;过去一年来&#xff0c;广告漏斗优化一改往日做“加法”&#xff0c;而通过简化漏斗&#xff0c;提升全系统一致性。如百度这样庞大的广告库规模、高流量规模以及复杂的业务规则&#xff0c;要做到极简的漏斗层次&…

206367-33-1,抗菌肽pBD-1

pBD-1 是一种来源于猪组织的内源性组成型表达的抗菌肽 (AMP)&#xff0c;尤其在猪黏膜上皮部位表达。pBD-1 具有抗菌作用&#xff0c;并且有助于猪黏膜和系统宿主防御。pBD-1 is an endogenous and constitutively expressed antimicrobial peptide (AMP) from porcine tissues…

rocketmq源码-consumer拉取消息(push模式)

前言 在前面consumer启动的博客中&#xff0c;有说过&#xff0c;在启动过程中&#xff0c;有两个比较重要的逻辑&#xff0c;分别是负载均衡和拉取消息的service&#xff0c;这篇博客&#xff0c;主要记录拉取消息的service&#xff0c;因为前面的demo和这篇笔记中的demo&…

电磁场知识整理------2022/12/14

电磁场知识整理1、数学基础麦克斯韦方程2、麦克斯韦方程组的近似情况2.1 恒定电场2.2 恒定电流场2.3 恒定磁场2.4 动态电磁场2.5 时谐电磁场3、电磁辐射与电磁波写在最后学习资源&#xff1a;慕课上浙大的工程电磁场与波。 工程电磁场与波 1、数学基础 正交坐标系&#xff1a;…

Android 线上卡顿监控

文章目录1. 卡顿与ANR的关系2. 卡顿原理3. 卡顿监控3.1 WatchDog3.2 Looper Printer3.2.1 监控TouchEvent卡顿3.2.2 监控IdleHandler卡顿3.2.3 监控SyncBarrier泄漏4. 小结平时看博客或者学知识&#xff0c;学到的东西比较零散&#xff0c;没有独立的知识模块概念&#xff0c;而…

leetcode 375. 猜数字大小 II-【python3详细图解】递归+记忆化搜索与动态规划

题目 我们正在玩一个猜数游戏&#xff0c;游戏规则如下&#xff1a; 我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字&#xff0c;就会 赢得游戏 。如果你猜错了&#xff0c;那么我会告诉你&#xff0c;我选的数字比你的 更大或者更小 &#xff0c…

二十、JavaScript——逻辑非

! 逻辑非- &#xff01;可以对一个值进行非运算 - 它可以对一个布尔值进行取反操作 true 变成 false false 变成 true - 如果对一个非布尔值进行取反&#xff0c;它会将其先转换为布尔值&#xff0c;再进行取反操作 可以利用这个特点将其他类型转换为布尔值 <script>/*! …

Hybrid模式下,如何实现热更新?

做过开发的小伙伴应该对“热更新”不陌生吧&#xff01;热更新就是指在游戏或软件更新的时候&#xff0c;不用再重新下载安装包进行安装&#xff0c;而是在启动应用程序的时候&#xff0c;在内部进行资源或代码的更新。那么如今&#xff0c;市场为什么越来越多地选择热更新技术…

数据结构——图最全总结(期末复习必备)

目录 图 定义&#xff1a; 基本术语&#xff1a; 图的存储结构 邻接矩阵 邻接表 十字链表 邻接多重表 图的遍历 深度优先搜索(Depth First Search,DFS) 广度优先搜索(Breadth First Search,BFS) 图的应用 最小生成树 普利姆算法 克鲁斯卡尔算法 最短路径 单源最短…

优蓝冲刺港股:上半年期内亏损过亿 主打蓝领人才服务

雷递网 雷建平 12月14日优蓝国际控股股份有限公司&#xff08;简称&#xff1a;“优蓝”&#xff09;日前递交招股书&#xff0c;准备在香港上市。上半年期内亏损1.18亿优蓝是一家蓝领终身服务平台&#xff0c;旨在成为蓝领人才的首选终身服务平台。截至最后实际可行日期&#…

[附源码]Nodejs计算机毕业设计基于博客系统的UI手机界面展示Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

vue3插槽(匿名插槽-具名插槽-插槽作用域-动态插槽)

文章目录容器布局匿名插槽具名插槽作用域插槽动态插槽容器布局 &#x1f468;&#x1f3fb; parent.vue <script setup lang"ts"> import { ref, useAttrs, defineProps } from "vue"; import children from ./children.vue</script><tem…

界面控件DevExpress WinForm——HTML-CSS感知控件介绍

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

疫情防控|Springboot+小程序+校园疫情防控系统设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

【刷题笔记】之牛客面试必刷TOP101(二分查找-I + 二维数组中的查找 + 寻找峰值 + 数组中的逆序对 + 旋转数组的最小数字 + 比较版本号)

目录 1. 二分查找-I 2. 二维数组中的查找 3. 寻找峰值 4. 数组中的逆序对 5. 旋转数组的最小数字 6. 比较版本号 1. 二分查找-I 题目链接&#xff1a;二分查找-I_牛客题霸_牛客网 (nowcoder.com) 题目要求&#xff1a; 上代码 import java.util.*;public class Solut…

Spring MVC学习 | 视图RESTFul

文章目录一、视图1.1 视图对象View1.2 ThymeleafView1.3 转发视图1.4 重定向视图1.5 视图控制器二、RESTFul2.1 简介2.2 PUT和DELETE请求的实现2.2.1 HiddenHttpMethodFilter过滤器2.2.2 实现PUT请求2.2.3 实现DELETE请求学习视频&#x1f3a5;&#xff1a;https://www.bilibil…

Python 元组(Tuple)操作详解

Python的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 一、创建元组 代码如下: 1 2 3 tup1 (physics, chemistry, 1997, 2000); tup2 (1, 2, 3, 4, 5 ); tup3 &qu…