微信小程序开发:集成腾讯地图的步骤

简介: 在微信小程序开发的时候,会避免不了的使用腾讯送的大礼包,从微信支付到腾讯地图,一条龙的服务,不得不说鹅厂的实力,但是话又说回来了,鹅厂的官方API真是不敢恭维,尤其是微信小程序开发文档,如果不熟悉的话,真的是大坑不断,连环坑不断,无力吐槽。本篇博文来说说微信小程序开发的时候集成实现腾讯地图的功能,虽然微信官方API介绍了集成步骤,但是还是会给小白带来云里雾里的感觉,接下来就详细来说说具体的集成步骤,分享出来。

前言

在微信小程序开发的时候,会避免不了的使用腾讯送的大礼包,从微信支付到腾讯地图,一条龙的服务,不得不说鹅厂的实力,但是话又说回来了,鹅厂的官方API真是不敢恭维,尤其是微信小程序开发文档,如果不熟悉的话,真的是大坑不断,连环坑不断,无力吐槽。本篇博文来说说微信小程序开发的时候集成实现腾讯地图的功能,虽然微信官方API介绍了集成步骤,但是还是会给小白带来云里雾里的感觉,接下来就详细来说说具体的集成步骤,分享出来。

其实微信小程序还可以集成百度地图的,只是这里不再介绍其他家的地图集成到微信小程序的步骤。本案例直接把地图部分进行了封装,用组件的形式调用,方便使用。还是直接上代码比较好,具体操作如下所示:

一、map组件的实现

1、homeMap.js文件

const app = getApp()
Component({
  properties: {
    position: {
      type: Array,
      value: [],
    },
    markers: {
      type: Array,
      value: [],
    },
    markerList: {
      type: Array,
      value: []
    },
    getCurrentElement: {
      type: Function,
      value: function () { }
    }
  },
  data: {
    position: [],
    markerList: {},
    markers: []
  },
  ready: function () {
    const mapContext = wx.createMapContext('map')
    const {
      position,
      markers,
      markerList
    } = this.properties;
    this.setData({
      position,
      markers,
      markerList,
    });
    mapContext.moveToLocation({
      longitude: 114.54286,
      latitude: 22.05956,
      complete(e) {
        console.log('moveToLocation', e)
      }
    })
  },
  methods: {
    markertap({
      markerId
    }) {
      let {
        markerList
      } = this.properties;
      markerList && markerList.map((item, idx) => {
        if (item.id === markerId) {
          item.num = markerList.length;
          this.triggerEvent('onMarker', item) //通过triggerEvent将参数传给父组件
        }
      })
    }
  },
})

2、homeMap.json文件

{
  "component": true
}

3、homeMap.wxml文件

<map id="map"
longitude="{{position[0]}}"
latitude="{{position[1]}}"
scale="14"
controls="{{controls}}"
bindcontroltap="controltap"
markers="{{markers}}"
markerList="{{markerList}}"
enable-zoom="true"
bindmarkertap="markertap"
polyline="{{polyline}}"
scale="11"
style="width: 100%; height: 100%;" >
</map>

4、homeMap.wxss文件

该文件不做操作

二、调用map组件的实现

在需要使用地图的地方,调用map组件,具体操作步骤如下所示:

1、home.js文件

Page({
  data: {
    markerPorts: [], // 定位点
    position: [], // 地图中心点位置
    parkMark: {}
  },
  onReady: function () {
  //网络请求,这里可以忽略
    let url = 'ec/me/pag-space/list'
    const params = {
      pageNum: 1,
    }
    homeParkList(url, params).then(({
      code,
      data,
      msg
    }) => {
      if (code === "200") {
        const {
          records,
          list
        } = data
        this.setData({
          records: records
        })
        const markers = []; // 定位点集合
        const marker = {
          '0': "/images/green_marker.png",
          '1': "/images/red_marker.png",
          '2': "/images/yellow_marker.png",
          'def': "/images/yellow_marker.png"
        }
        // 拼装定位点集合
        list.forEach(res => {
          const {
            id,
            latitude,
            longitude,
            parkingStatus,
          } = res
          markers.push({
            id,
            latitude,
            longitude,
            iconPath: marker[parkingStatus],
            width: 30,
            height: 30
          })
        })
        wx.chooseLocation({
          complete: e => {
            markers.push({
              id: 9999,
              latitude: this.data.position[0],
              longitude: this.data.position[1],
              iconPath: marker['def'],
              width: 30,
              height: 30
            })
            this.setData({
              position: [e.longitude, e.latitude],
              markerPorts: markers,
              markerList: list
            })
          }
        })
      }
    })
  },
  getMarkerInfo(e) {
    if (e.toString() === '[object Object]') {
      this.setData({
        parkInfo: e.detail
      })
    }
  },
})

2、home.json文件

{
  "component": true,
  "usingComponents": {
    "component":"../../components/Map/homeMap"  //引用map组件
  }
}

3、home.wxml文件

<view class="page">
    <view class='content'>
      <component class="map-comp" position="{{position}}" markers="{{markerPorts}}" markerList="{{markerList}}" bind:onMarker="getMarkerInfo" bind:aaa="bb" />
    </view>
</view>

具体实现的效果图如下所示:

1.png

最后

以上就是本章全部内容,欢迎关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注!

相关文章
预约按摩小程序开发,为什么很多上门按摩平台根本招聘不到优秀技师?
上门按摩平台面临招不到优秀技师的问题,主要原因是平台众多,技师选择多样。为解决此问题,平台可引入技师等级制度,根据订单数量和好评率划分高、低等级技师。高等级技师可享受70%-90%的高提成及首页推荐,这不仅能激励技师的积极性,还能帮助平台筛选出优质技师,提升服务质量和口碑,形成良性循环。
|
2天前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
14天前
|
人工智能 小程序 IDE
【一步步开发AI运动小程序】九、姿态辅助调试桌面工具的使用
随着AI技术的发展,各大厂商推出的AI运动APP如“乐动力”、“天天跳绳”等,使云上运动会、线上健身等概念大热。本文将指导你如何利用“云智AI运动识别小程序插件”,在微信小程序中实现类似功能,包括工具搭建、服务启动及数据回传等步骤,助力开发者高效开发AI运动小程序。
【一步步开发AI运动小程序】九、姿态辅助调试桌面工具的使用
|
7天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
7天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
18天前
|
人工智能 JSON 小程序
【一步步开发AI运动小程序】八、利用body-calc进行姿态识别
随着AI技术的发展,各大厂商推出的如“乐动力”、“天天跳绳”等AI运动APP,使得云上运动会、线上健身等概念风靡一时。本文将引导读者从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”,介绍人体姿态检测规则、规则编写语法、执行检测规则运算及姿态检测实战等内容,助力开发者轻松实现AI运动小程序的开发。
【一步步开发AI运动小程序】八、利用body-calc进行姿态识别
|
9天前
|
数据采集 人工智能 小程序
【一步步开发AI运动小程序】十、姿态动作相似度比较
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,重点讲解姿态动作相似度比较功能的运用,包括样本动作帧的采集和姿态相似度的计算方法,以及在组合运动中的应用实例。
|
2天前
|
人工智能 小程序 JavaScript
【一步步开发AI运动小程序】十四、主包超出2M大小限制,如何将插件分包发布?
本文介绍了如何从零开始开发一个AI运动小程序,重点讲解了通过分包技术解决程序包超过2M限制的问题。详细步骤包括在uni-app中创建分包、配置`manifest.json`和`pages.json`文件,并提供了分包前后代码大小对比,帮助开发者高效实现AI运动功能。
|
8天前
|
人工智能 小程序 开发者
【一步步开发AI运动小程序】十一、人体关键点跳跃追踪
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,涵盖云上运动会、健身打卡等热门应用场景。通过示例代码展示如何调用插件功能,实现动作追踪与分析,助力开发者快速上手。
|
18天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。