微信小程序原生组件使用

1、video组件使用

 <view class="live-video">
      <video id="myVideo" src="{{videoSrc}}" bindplay="onPlay" bindfullscreenchange="fullScreenChange" controls object- 
      fit="contain">        
      </video>
 </view>
data:{
 videoSrc:'https://jumeiyouhu.com/huawei_obs/product_info%2F20240509%2Fe44a7a3dfa5e459a897bf5466bbcf755.mp4',
},
 fullScreenChange(e) {
    console.log('全屏状态改变', e.detail.fullScreen);
    // 非全屏
    if (!e.detail.fullScreen) {
      videoContext.pause(); // 暂停视频播放
    }
  },
  onPlay() {
    console.log('视频开始播放');
    let videoContext = wx.createVideoContext('myVideo');
    videoContext.requestFullScreen();
  },

2、map组件使用 

这里把map封装成了一个公共组件jm-stroke

 <jm-stroke endLat="28.24689" endLng="112.962817" endLat="28.24689" startTitle="芙蓉区马王街道中电软件园" endTitle="谷山森林公园" startLat="28.142858" startLng="113.033865" cityCode="4031" />

 jm-stroke:

<view class="stroke-map">
  <map id="myMap" polyline="{{polyline}}" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}"  ></map>
</view>
// components/jm-stroke/jm-stroke.js
const APP = getApp()
const MAP = require("../../utils/map")
Component({
  lifetimes: {
    attached() {
      this.onLoadMap()
    }
  },
  /**
   * 组件的属性列表
   */
  properties: {
    endLat: {
      type: Number,
      value: null
    },
    endLng: {
      type: Number,
      value: null
    },
    startLat: {
      type: Number,
      value: null
    },
    startLng: {
      type: Number,
      value: null
    },
    cityCode: {
      type: Number,
      value: null
    },
    startTitle: {
      type: String,
      value: ''
    },
    endTitle: {
      type: String,
      value: ''
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    baseUrl: APP.globalData.baseUrl,
    markers: [],
    latitude: '',
    longitude: '',
    polyline: ''
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onLoadMap() {
      const markers = []
      const markerStart = {
        id: 1,
        latitude: this.data.startLat,
        longitude: this.data.startLng,
        iconPath: this.data.baseUrl + '/images/start.png',
        width: 50,
        height: 50,
        callout: {
          content: this.data.startTitle,
          color: '#000',
          fontSize: 12,
          borderRadius: 10,
          bgColor: '#fff',
          padding: 10,
          display: 'ALWAYS',
          textAlign: 'center'
        }
      }
      const markerEnd = {
        id: 2,
        latitude: this.data.endLat,
        longitude: this.data.endLng,
        iconPath: this.data.baseUrl + "/images/end.png",
        width: 50,
        height: 50,
        callout: {
          content: this.data.endTitle,
          color: '#000',
          fontSize: 12,
          borderRadius: 10,
          bgColor: '#fff',
          padding: 10,
          display: 'ALWAYS',
          textAlign: 'center'
        }
      }
      markers.push(markerStart)
      markers.push(markerEnd)
      let includePoints = [{
          latitude: this.data.endLat,
          longitude: this.data.endLng
        },
        {
          latitude: this.data.startLat,
          longitude: this.data.startLng
        }
      ]
      this.setData({
        markers,
        cityCode: this.data.cityCode,
        includePoints
      })
      this.direction('driving')
      this.direction('transit')
    },
    // 路线规划
    direction(mode) {
      let parmas = {
        key: 'BEBBZ-4PZKB-6JMU6-NCJ7F-QUIH7-GQFFS',
        from: this.data.startLat + ',' + this.data.startLng,
        to: this.data.endLat + ',' + this.data.endLng,
        mode
      }
      const THAT = this
      if (mode === 'driving') {
        MAP.directionByDriving(parmas).then(res => {
          if (res.status === 0) {
            const result = res.result
            const route = result.routes[0]
            let coors = route.polyline,
              pl = [];
            let kr = 1000000;
            for (let i = 2; i < coors.length; i++) {
              coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
            }
            //将解压后的坐标放入点串数组pl中
            for (let i = 0; i < coors.length; i += 2) {
              pl.push({
                latitude: coors[i],
                longitude: coors[i + 1]
              })
            }
            THAT.setData({
              distance: (result.routes[0].distance / 1000).toString().slice(0, -2),
              latitude: pl[0].latitude,
              longitude: pl[0].longitude,
              // 绘制路线
              polyline: [{
                points: pl,
                color: '#58c16c',
                width: 6,
                borderColor: '#2f693c',
                borderWidth: 1
              }]
            })
          } else {
            wx.showToast({
              title: res.message,
              icon: 'none'
            })
          }
        })
      }
    }
  }
})

引用的.map组件方法:

const MAP = {
  // 驾车路线规划
  directionByDriving(data) {
    return new Promise((resolve, reject) => {
      wx.request({
        url: "https://apis.map.qq.com/ws/direction/v1/driving",
        data,
        header: {
          'content-type': 'application/json' // 默认值
        },
        success: (res) => {
          resolve(res.data)
        },
        fail: reject
      })
    })
  }
}

module.exports = MAP

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes: 从零开始理解K8s架构

目录 一、简介 二、Kubernetes 架构原理 2.1 控制平面 2.2 Node 组件 2.3 Container Image 2.4 kubelet 2.5 Cluster 三、服务调用 四、总结 一、简介 Kubernetes 是一个开源的容器编排系统&#xff0c;用于自动化应用容器的部署、扩展和管理。它是Google基于Borg…

Yolov8目标检测——在Android上部署Yolov8 tflite模型

1. 简介 YOLOv8 是一种用于目标检测的深度学习模型&#xff0c;它是 YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本之一。YOLO 系列因其高效和准确性而在计算机视觉领域非常受欢迎&#xff0c;特别是在需要实时目标检测的应用中&#xff0c;如视频监控、自动…

【Shell编程】3.Shell字符串、Shell数组

目录 Shell字符串 代码1 test3_1.sh 运行 结果 获取字符串长度 代码2 test3_2.sh 运行 结果 Shell字符串拼接 代码3 test3_3.sh 运行 结果 Shell字符串截取 从指定位置开始截取 从字符串左边开始计数 从字符串右边开始计数 从指定字符开始截取 使用#号截取…

煤矿防爆气象传感器

TH-WFB5随着工业技术的不断发展&#xff0c;煤矿作为我国能源领域的重要组成部分&#xff0c;其安全生产问题一直备受关注。在煤矿生产过程中&#xff0c;井下环境复杂多变&#xff0c;瓦斯、煤尘等易燃易爆物质的存在使得井下安全工作尤为重要。为了提高煤矿生产的安全性&…

Apache Flume概述

Apache Flume概述 1.Flume定义 ​ Flume是cloudera(CDH版本的hadoop) 开发的一个分布式、可靠、高可用的海量日志收集系统。 它将各个服务器中的数据收集起来并送到指定的地方去&#xff0c;比如说送到HDFS、Hbase&#xff0c;简单来说flume就是收集日志的。 2.Flume基础架构…

inBuilder 低代码平台新特性推荐 - 第十八期

今天来给大家带来的是inBuilder低代码平台特性推荐系列第十八期——表单设计器集成预约日历组件。 一、场景介绍 项目上希望用日历的形式展示某地点在一段时间内的预约记录&#xff0c;表单设计器新增支持创建日历预约视图&#xff0c;并配置预约属性。 二、运行效果 三、前…

成都一体化污水处理成套设备如何选型

一体化污水处理成套设备因其占地面积小、操作简便、处理效果稳定等优点&#xff0c;在小型污水处理项目中得到了广泛应用。在选型时&#xff0c;应考虑以下几个关键因素&#xff1a; 处理规模&#xff1a;根据需要处理的污水量&#xff08;通常以每天处理的立方米数表示&#x…

滑动窗口篇: 长度最小子数组|无重复字符最长字串

目录 1、滑动窗口算法 1.1 核心概念 1.2 基本步骤 1.3 应用场景 1.4 优势 2. leetcode 209 长度最小子数组 暴力解题思路&#xff1a; 滑动窗口思路&#xff1a; 3、无重复字符的最长子串 暴力解题思路&#xff1a; 滑动窗口思路&#xff1a; 1、滑动窗口算法 滑动…

React 第二十九章 React 和 Vue 描述页面的区别

面试题&#xff1a;React 和 Vue 是如何描述 UI 界面的&#xff1f;有一些什么样的区别&#xff1f; 标准且浅显的回答&#xff1a; React 中使用的是 JSX&#xff0c;Vue 中使用的是模板来描述界面 前端领域经过长期的发展&#xff0c;目前有两种主流的描述 UI 的方案&#xf…

基于MWORKS 2024a的MIMO-OFDM 无线通信系统设计

一、引言 在终端设备和数据流量爆发式增长的今天&#xff0c;如何提升通信系统容量、能量效率和频谱利用率成为5G通信的关键问题之一。大规模天线阵列作为5G及B5G无线通信关键技术通过把原有发送端天线数量提升一个或多个数量级&#xff0c;实现波束聚集、控制波束转向&#x…

《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景

DelayQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;延迟队列&#xff0c;其中元素只有在其预定…

使用Flask-Admin创建强大的后台管理系统

文章目录 安装Flask-Admin创建Flask应用添加Flask-Admin添加模型扩展延伸自定义视图权限管理文件上传 结语 在Web应用开发中&#xff0c;后台管理系统是至关重要的组成部分&#xff0c;它能够让管理员轻松管理应用的各种数据和配置。Flask-Admin是一个功能强大的Flask扩展&…

常见排序算法——希尔排序

基本原理 希尔排序在插入排序的基础之上&#xff0c;将待排序序列分成组&#xff0c;分成 gap 个组&#xff0c;组的数量通过 length / 2 获得&#xff0c;比如6个元素的序列&#xff0c;那么就是 3 个组&#xff0c;每个组两个元素&#xff0c;然后将每个组的元素进行插入排…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

【程序设计和c语言-谭浩强配套】(适合专升本、考研)

一晃大半年没更新了&#xff0c;这一年一直在备考&#xff0c;想着这几天把前段时间学的c语言给大家分享一下&#xff0c;在此做了一个专栏&#xff0c;有需要的小伙伴可私信获取o。 简介&#xff1a;本专栏所有内容皆适合专升本、考研的复习资料&#xff0c;本人手上也有日常…

关于架构设计:什么是完美?

这篇不谈技术。 为什么写这篇文章&#xff1f;因为刚毕业时看一本关于软件架构设计的书&#xff0c;记得有一句关于完美的话&#xff0c;但后来无论如何都想不起来了。只记得和飞机有关。而今年在看“The Pragmatic Programmer: your journey to mastery”第2版&#xff08;20…

##13 如何在Python中优雅地使用异常处理

文章目录 引言1. 异常处理基础2. 处理多种异常3. 捕捉所有异常4. finally 语句5. 自定义异常结语参考链接 引言 在编程中&#xff0c;错误是在所难免的。Python提供了异常处理机制&#xff0c;允许程序在遇到错误时优雅地恢复。本文将介绍Python中异常处理的基本概念&#xff…

Mac YOLO V9推理测试(基于ultralytics)

环境&#xff1a; Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 使用YOLO一般都会接触ultralytics这个框架&#xff0c;今天来试试用该框架进行YOLO V9模型的推理。 YOLOv9目前提供了四种模型下载&#xff1a;yolov9-c.pt、yolov9-e.pt、gelan-c.p…

异常处理/__LINE__ 与 __FILE__ 宏在调试和异常处理中的高级使用

文章目录 概述痛点分析_LINE_ 代码所在行号_LINE_ 直接转为字符串_LINE_ 作为整型数据使用_LINE_标记宏函数的调用位置 _FILE_ 代码所在文件名简单实验不期望 _FILE_ 宏代表全路径 assert 使用了 _FILE_ 和 _LINE_借助TLS技术小结 概述 _LINE_和_FILE_是C/C中的预定义宏&#…

【Sql-02】 求每个省份最新登陆的三条数据

SQL 输出要求数据准备sql查询结果 输出要求 要求输出&#xff0c;userid_1,logtime_1,userid_2,logtime_2,userid_3,logtime_3 数据准备 CREATE TABLE sqltest (province varchar(32) NOT NULL,userid varchar(250) DEFAULT NULL,logtime datetime ) ENGINEInnoDB DEFAULT C…