热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序地图实现展示线路的方法

这篇文章将为大家详细讲解有关微信小程序地图实现展示线路的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所

这篇文章将为大家详细讲解有关微信小程序地图实现展示线路的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

效果图:

微信小程序地图实现展示线路的方法

思路:

1、首先获取一系列的坐标点,然后将这些坐标从头到尾链接起来。(参考微信小程序地图组件polyline属性)

2、在获取的坐标点上标注某一个位置,实现打点。(参考微信小程序地图组件marker属性 )

3、使用map组件

微信小程序地图组件api地址

下面直接展示代码:

wxml:


 
  
 
 
  
    预计{{now}}送达
    由药店提供配送服务
  
  
    
    联系商家
   
   
    联系配送员
   
  

js:

data: {
  longitude: '',
  latitude:'',
  points: [],
  polyline: [],
  markers: [],
  mapList:'',
  polylineList:[],
  
 },
 mapLine(options){
   wx.showLoading({
    title: '加载中',
   })
   let subOrderNo = options.maporder
   console.log(subOrderNo)
   let that=this
   let token = that.data.storageData.token
   let url = '接口地址';
   let params = {
    subOrderNo:subOrderNo
   };
  
   http.getRequest(url, params, token).then(res => {
     
     
      // 地图打点标记商家和配送员位置
      let markers= [
       {
       iconPath: imgUrl+'shoplong.png',
       id: 0,
       latitude: that.data.mapList.pharmacyInfo.latitude,
       longitude: that.data.mapList.pharmacyInfo.longitude,
       callout: { 
        content: that.data.mapList.pharmacyInfo.pharmacyName+"已接单",
        name:"商家已接单",
        color: "#ff0000",
        fontSize: "16", 
        borderRadius: "6",
        bgColor: "#ffffff",
        padding: "10",
        display:"ALWAYS"
        },
       width: 50,
       height: 50
      },
      {
       iconPath:imgUrl+ 'maplog.png',
       id: 1,
       latitude: that.data.mapList.locationList[0].latitude,
       longitude: that.data.mapList.locationList[0].longitude,
       callout: { 
        content: "配送员正在配送",
        name:"正在配送",
        color: "#ff0000",
        fontSize: "16", 
        borderRadius: "6",
        bgColor: "#ffffff",
        padding: "10",
        display:"ALWAYS"
        },
       width: 50,
       height: 50
      },
     ];
     console.log(markers)
     let _this=this
     _this.setData({
      markers:markers,
      hasMarkers:true,
      latitude:that.data.mapList.pharmacyInfo.latitude,
      longitude:that.data.mapList.pharmacyInfo.longitude
     })
     if(orderDeliver.polylineJson!=null){
      let mapJson = JSON.parse(orderDeliver.polylineJson);
      console.log(mapJson)
      // 计算送达时间
      let mapDate=that.data.mapList.updateTime
      let newsDate=new Date(mapDate)
      // let h = newsDate.getHours()
      let m = newsDate.getMinutes()
      let mapMinte=mapJson.route.paths[0].duration/60
      newsDate.setMinutes(m+mapMinte)
      let dd=newsDate.getMinutes()
      let hh=newsDate.getHours()
      if(dd<10){
       dd=&#39;0&#39;+dd
      }
      if(hh<10){
       hh=&#39;0&#39;+hh
      }
      let now=hh +&#39;:&#39;+dd;
      if(newsDate.getMinutes()>=60){
        h=h+1;
      }else{
       this.setData({
        now:now
       })
       console.log(now)
      }
      // 循环数组取快递员的经纬度
      let list = mapJson.route.paths[0].steps;
      // console.log(list);
      let polylineList = [];  
      for(let i =0;i{
         let a = items.split(",");
         polylineList.push({
          latitude: a[1],
          longitude: a[0]
         });
         // console.log(polylineList)
        })
        // polylineList.concat(pList);
       }
      }
       let polyline = [{
        points: polylineList,
        color: "#518FF8",
        width: 4,
        dottedLine: false
       }];
       this.setData({
        polyline:polyline,
        points:polylineList,
       }) 
      }  
     }else if(res.respOnseCode== 0 && res.responseBody != null && res.responseBody.length != 0 && res.responseBody.deliverType ==2){
      let list_di=res.responseBody.deliverType
      let maplistJson=res.responseBody.polylineJson
      let listMap=JSON.parse(maplistJson)
      console.log(listMap)
      let logList=listMap.data.reverse()
      logList.forEach(element => {
        element.ftime = element.ftime.substring(0,16)
      });
      console.log(logList)
      this.setData({
       mapList:[],
       hasMarkers:false,
       logList:logList,
       list_di:list_di
      })
      // sysMsg.sysMsg("商家还未接单,请稍后查看", 2000, &#39;none&#39;);
     }else{
      sysMsg.sysMsg("商家还未接单,请稍后查看", 2000, &#39;none&#39;);
     }
   }).catch(err => {
    console.log(err);
    sysMsg.sysMsg("请求超时,请稍后再试", 1500, &#39;none&#39;);
   })
 },
 onLoad: function (options) {
  this.mapLine(options)
  this.mapHeight()
  this.mapLog()
  // this.markers()
  // console.log(options.maporder)
  this.getstorageDataToPage()
     // qq地图api
   qqmapsdk = new QQMapWX({
   key: &#39;申请的微信小程序地图key&#39;
  });
},

关于微信小程序地图实现展示线路的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


推荐阅读
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 深入解析 Vue 中的 Axios 请求库
    本文深入探讨了 Vue 中的 Axios 请求库,详细解析了其核心功能与使用方法。Axios 是一个基于 Promise 的 HTTP 客户端,支持浏览器和 Node.js 环境。文章首先介绍了 Axios 的基本概念,随后通过具体示例展示了如何在 Vue 项目中集成和使用 Axios 进行数据请求。无论你是初学者还是有经验的开发者,本文都能为你解决 Vue.js 相关问题提供有价值的参考。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • Java 点餐系统源代码附带管理后台(免费提供)
    本项目提供了一套基于 Java 的点餐系统,包括前端小程序和后端管理平台。采用 Spring Boot 和 SSM 框架,结合 MySQL 和 Redis 数据库技术,适用于学习和二次开发。有需要源代码的开发者可以通过私信联系,免费获取下载链接。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 深入解析微信小程序开发中的全局配置文件设置与优化技巧
    本文深入探讨了微信小程序开发中全局配置文件的设置与优化技巧,详细解析了 `app.js`、`app.json`、`app.wxss` 和 `project.config.json` 的功能与最佳实践。通过合理配置这些文件,开发者可以显著提升小程序的性能和用户体验。文章还介绍了如何利用这些配置文件进行模块化开发和调试,帮助开发者更好地管理和维护小程序项目。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
author-avatar
重庆车管所
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有