微信小程序 地图标点

根据数据在地图上进行标点,

默认显示第一个数据位置为地图中心点

用swiper标签显示对应标点的数据信息

滑动swiper标签 移动地图中心点至对应位置

HTML代码: 

 <map scale="12" id="myMap" longitude="{{long}}" latitude="{{lat}}" markers="{{markers}}" show-location></map>
   //swiper 显示标点信息用的 当你滑动swiper时 让地图中心点也移动到对应的标点上
    <swiper wx:if="{{swiperList.length != 0}}" bindchange="swiperChange" circular class="slide" duration="{{duration}}">
      <block wx:for="{{swiperList}}" wx:key="*this">
        <swiper-item>
          <view class="swiper-item">
            //class="swiper-item"盒子中写想展示的样式即可
           </view>
        </swiper-item>
      </block>
    </swiper>

JavaScript代码: 

  data: {
    markers: [],//地图标点数据
    swiperList: [],//swiper数据
    //上边这俩数据列表得是对应的上的嗷,后端要是嫌费劲一个接口返给你了,那你就得自己处理了
    //我后端是给我分成了俩接口
    duration: 500, //swiper动画过渡速度
    //经纬度,作为地图中心点
    long: "",
    lat: "",
  },
//获取地图标点数据
  getInfo(){
    $api.换自己接口({
    }).then((res) => {
      if(res.data.code == 1){
        let data = res.data.data
        this.setData({
          markers:data, //获取地图标点数据(这玩意儿数据格式有要求,提前跟后端说,省的处理数据了,跟后端关系不好的当我没说,格式看下边图片)
          //获取第一个显示的经纬度,作为地图中心点
          long: data[0].longitude,
          lat: data[0].latitude,
        })
      }else{
        wx.showToast({
          title: res.data.msg,
          icon: 'none',
          duration: 2000
        })
      }
    })
  },
// swiper切换 地图中心点跟着切换至对应的标点上
  swiperChange(e) {
    let index = e.detail.current
    let long = this.data.markers[index].longitude
    let lat = this.data.markers[index].latitude
    const mapContext = wx.createMapContext('myMap');
    mapContext.moveToLocation({
      latitude: Number(lat),
      longitude: Number(long)
    });
  },
//获取swiper数据
  getList(){
    $api.换自己接口({
    }).then((res) => {
      if(res.data.code == 1){
        let data = res.data.data
        this.setData({
          swiperList:data
        })
      }else{
        wx.showToast({
          title: res.data.msg,
          icon: 'none',
          duration: 2000
        })
      }
    })
  },

maker地图标点数据要求,有必填项即可,需要更多看官网 

map | 微信开放文档 往下扒拉扒拉就是

要实现这个功能,可以按照以下步骤进行操作: 1. 在微信开发者工具中创建一个新的小程序项目,并且勾选上“使用微信云开发”选项。 2. 在小程序页面中引入地图组件。可以使用微信提供的组件`<map>`来实现。 3. 在小程序页面中添加标点。可以使用微信提供的`<map>`组件的`markers`属性来添加标点。 4. 为每一个标点添加点击事件。可以使用微信提供的`<map>`组件的`bindmarkertap`属性来添加点击事件,并且指定一个函数来处理点击事件。 5. 在点击事件的处理函数中,使用微信提供的`wx.navigateTo`函数来跳转到指定页面。 下面是一个示例代码,可以帮助你实现这个功能: ```html <!-- 在小程序页面中添加地图组件 --> <map id="myMap" latitude="{{latitude}}" longitude="{{longitude}}" markers="{{markers}}" bindmarkertap="onMarkerTap"></map> ``` ```javascript // 在小程序页面中添加以下代码 Page({ data: { latitude: 39.912345, // 初始化地图的中心点纬度 longitude: 116.123456, // 初始化地图的中心点经度 markers: [{ id: 1, latitude: 39.912345, longitude: 116.123456, title: '这是一个标点', iconPath: '/images/marker.png' }] }, onMarkerTap: function(event) { // 获取点击的标点的信息 var markerId = event.markerId; var marker = this.data.markers[markerId]; // 跳转到指定页面 wx.navigateTo({ url: '/pages/detail/detail?latitude=' + marker.latitude + '&longitude=' + marker.longitude + '&title=' + marker.title }) } }) ``` 在上面的代码中,我们首先在小程序页面中添加了一个地图组件,并且设置了地图的中心点和一个标点。然后为`<map>`组件添加了`bindmarkertap`属性,并且指定了一个`onMarkerTap`函数来处理点击事件。当用户点击了某一个标点时,`onMarkerTap`函数会被触发,然后获取点击的标点的信息,并且使用`wx.navigateTo`函数跳转到一个指定的页面。在这个页面中,我们可以根据传入的经纬度和标题等信息来显示地图的具体位置和相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值