微信小程序原生组件使用

news2024/11/27 23:42:00

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

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

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

相关文章

每日两题 / 104. 二叉树的最大深度 102. 二叉树的层序遍历(LeetCode热题100)

104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 递归判断&#xff0c;当前节点的最大深度为1 max(左节点的最大深度&#xff0c;右节点的最大深度) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* …

PowerPhotos for Mac:您的照片管理助手

PowerPhotos for Mac&#xff0c;作为一款专业的照片管理软件&#xff0c;为用户提供了全方位的照片管理解决方案。从照片的导入、整理到查找、编辑&#xff0c;PowerPhotos都能为您提供便捷的操作体验。 首先&#xff0c;PowerPhotos支持多库管理&#xff0c;用户可以根据需要…

Spark云计算平台Databricks使用,第一个scala程序

1) 创建Spark计算集群 Spark云计算平台Databricks使用&#xff0c;创建workspace和cluster-CSDN博客 2) 创建notebook Workspace -> Users&#xff0c;选择用户&#xff0c;点击Create -> Notebook 选择集群&#xff0c;可以修改notebook名字 修改了notebook名字 选择S…

triton之语法学习

一 基本语法 1 torch中tensor的声明 x = torch.tensor([[1,2, 1, 1, 1, 1, 1, 1],[2,2,2,2,2,2,2,2]],device=cuda) 声明的时候有的时候需要指出数据的类型,不然在kernel中数据类型无法匹配 x = torch.tensor([1,2,1,1,1,1,1,1],dtype = torch.int32,device=cuda) 2 idx id…

关于冯诺依曼体系结构 和 操作系统(Operator System)的概念讲解(冯诺依曼体系结构,操作系统的作用等)

目录 一、冯诺依曼体系结构 二、操作系统 1. 概念 2. 设计操作系统的目的 3.系统调用和库函数概念 4.总结 三、完结撒❀ 一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截…

酷开科技AI技术支持,酷开系统根据你的喜好量身定制节目

在当今数字化时代&#xff0c;个性化推荐已成为提升消费者体验的关键因素。酷开科技的智慧AI&#xff0c;为消费者提供了精彩的内容推荐服务&#xff0c;更大地丰富了消费者的娱乐生活。 酷开系统中的AI推荐引擎通过学习消费者的观看习惯和偏好&#xff0c;能够快速识别其兴趣…

idea java 后缀补全

ArrayList<$EXPR$> enters new ArrayList<>();for (int i 0; i < enters.size(); i) {$EXPR$ enter enters.get(i);enter$END$} 让编程效率翻倍的IDEA快捷键—自定义后缀补全_哔哩哔哩_bilibili

Navicat 干货 | 探索 PostgreSQL 中不同类型的约束

PostgreSQL 的一个重要特性之一是能够对数据实施各种约束&#xff0c;以确保数据完整性和可靠性。今天的文章中&#xff0c;我们将概述 PostgreSQL 的各种约束类型并结合免费的 "dvdrental" 示例数据库 中的例子探索他们的使用方法。 1. 检查约束&#xff1a; 检查…

winform图书销售管理系统+mysql

winform图书销售管理系统mysql数据库说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 功能模块&#xff1a; 管理员:ttt 123 登陆可以操作我的 个人信息 修改密码 用户信息 添加删除用户 图书 添加删除图书信息 购物车 购买订单信息 充值 退出账户 …

JavaScript中的深拷贝与浅拷贝详解

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f4da; 引言❓什么是拷贝&#x1f31f; 浅拷贝&#xff1a;表面功夫浅拷贝常用方法1. 扩展运算符 (...)2. Object.assign()3. 手动遍历对象属性 &#x1f320; 深拷贝&#xff1a;彻底分离深拷贝常用方法1. Lodash 的…

windows 10安装 docker desktop

升级 windows 10 windows 10 升级到 20H2&#xff0c;如 20H2 19045.4291。 注意&#xff1a;需返回更新&#xff0c;重启计算机&#xff0c;确保更新完整。 bios 开启虚拟化 开启cpu虚拟化功能。 windows 启用功能 启用hyper-v 启用 wsl 安装 wsl https://learn.microso…

大模型背后的秘密公式: Q*?

这麽说好像我是James Bond后面那个厉害的Q先生&#xff0c;Q是英文Quartermaster&#xff08;軍需官&#xff09;第1個英文字大寫&#xff0c;是007系列英國祕勤局虛構部門Q部門的領導。 Stanford大学的研究者最近发表了一篇名为"From r to Q*: Your Language Model is S…

react18【系列实用教程】JSX (2024最新版)

为什么要用 JSX&#xff1f; JSX 给 HTML 赋予了 JS 的编程能力 JSX 的本质 JSX 是 JavaScript 的语法扩展&#xff0c;浏览器本身不能识别&#xff0c;需要通过解析工具&#xff08;如babel&#xff09;解析之后才能在浏览器中运行。 bable 官网可以查看解析过程 JSX 的语法 …

(动画详解)LeetCode225.用队列实现栈

. - 力扣&#xff08;LeetCode&#xff09; 题目描述 解题思路 这道题的思路就是使用两个队列来实现 入栈就是入队列 出栈就是将非空队列的前n-1个元素移动到新的队列中去 再将最后一个元素弹出 动画详解 代码实现 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.…

Mock.js 问题记录

文章目录 Mock.js 问题记录1. 浮点数范围限制对小数不起效2. increment 全局共用 Mock.js 问题记录 最新写网页的时候引入了 Mock.js 来生成模拟数据&#xff1b; Mock使用起来很方便&#xff0c;具体可以参考 官网 很快就能上手&#xff0c; 但是这个项目最近一次提交还是在2…

Android 开机启动模式源码分析

在机器关机情况下&#xff0c;长按Power键启动机器&#xff0c;如果这时机器低电&#xff0c;会提示低电&#xff0c;机器不会正常启动&#xff1a; 而代码如下&#xff1a; 如果不是低电&#xff0c;正常情况是可以启动的。 在关机情况下&#xff0c;插入USB&#xff0c;机…

Spark云计算平台Databricks使用,上传文件

Databricks&#xff0c;是属于 Spark 的商业化公司&#xff0c;由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务&#xff0c;可用于数据集成&#xff0c;数据管道等任务。 创建workspace&#xff1a;Spa…

AUS GLOBAL 再次荣登皇家贝蒂斯俱乐部官网

AUS GLOBAL 作为一家备受信赖的金融服务领导者&#xff0c;一直以来都在致力于为客户提供卓越的交易体验和专业的服务。再次登上皇家贝蒂斯俱乐部官网Banner&#xff0c;不仅是对我们过去合作的肯定&#xff0c;更是对未来合作的信心和期待。这标志着我们之间的合作更加稳固和成…

雷森托尔环保科技有限公司见证2024杭州数字供应链装备展潮流

参展企业介绍 青岛雷森托尔环保科技有限公司创建于2018年&#xff0c;位于山东青岛&#xff0c;现注册资本3000万。公司主营生产模压木托盘、化工木托盘、大型设备木包装、出口木托盘、酒柜木酒架等&#xff0c;公司拥有技术人员6人&#xff0c;均为包装设计专业毕业&#xff0…

计算机科学类SSCI期刊,高效录用,检索稳定!

今天老毕给大家分享一本偏向系统理论实践方向SSCI&#xff0c;JCR2 区&#xff0c;中科院大类社会学 4区&#xff0c;2022年的影响因子为1.9&#xff0c;五年影响因子为2.5。编辑有好&#xff0c;响应迅速。 &#x1f4d8; 基本信息 &#x1f4d6; ISSN 2079-8954 &#x…