23年12月-24年1月工作笔记整理(前端)

目录

  • 一、css知识
  • 二、js知识
  • 三、需求技术

一、css知识

1.css实现文字描边(白底黑边)

-webkit-text-stroke: 1px #000;
color: #fff;
font-weight: 900;

2.css子元素平分父元素的宽度

父元素{ display:flex;} 
子元素{flex:1}

二、js知识

1.dayjs拿月份的最后一天日期

// 2020年2月结束日期时间
dayjs('2020-02').endOf('month').format('YYYY-MM-DD')

2.坐标系转换
坐标系分为:WGS84(国际通用) ,GCJ02(高德、QQ地图) ,BD09(百度地图) ,CGCS2000(2000国家大地坐标)

/*** 判断坐标是否在国内(国外坐标不需转换)* @param lng* @param lat* @returns {boolean}*/
const outOfChina = (lng, lat) => {// 纬度3.86~53.55,经度73.66~135.05return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55)
}/*** 国测局J02(火星坐标系 (GCJ-02))坐标转WGS84* @param lng* @param lat* @returns {[*,*]}*/
const gcj02towgs84 = (lng, lat) => {if (outOfChina(lng, lat)) {return [lng, lat]} else {let dlat = transformlat(lng - 105.0, lat - 35.0)let dlng = transformlng(lng - 105.0, lat - 35.0)const radlat = (lat / 180.0) * PIlet magic = Math.sin(radlat)magic = 1 - ee * magic * magicconst sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [lng * 2 - mglng, lat * 2 - mglat]}
}/*** WGS84转国测局J02(火星坐标系 (GCJ-02))* @param lng* @param lat* @returns {[*,*]}*/
const wgs84togcj02 = (lng, lat) => {if (outOfChina(lng, lat)) {return [lng, lat]} else {let dlat = transformlat(lng - 105.0, lat - 35.0)let dlng = transformlng(lng - 105.0, lat - 35.0)const radlat = (lat / 180.0) * PIlet magic = Math.sin(radlat)magic = 1 - ee * magic * magicconst sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [mglng, mglat]}
}
// wgs84坐标转百度坐标
const wgs84tobd = (lat, lon) => {const _wgs2gcj = wgs84togcj02(lat, lon)const _gcj2bd = gcj02tobd(_wgs2gcj[0], _wgs2gcj[1])return _gcj2bd
}/*** 国测局J02(火星坐标系 (GCJ-02))转百度坐标系* @param lng* @param lat* @returns {[*,*]}*/
const gcj02tobd = (lng, lat) => {const z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * X_PI)const theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * X_PI)const bdLng = z * Math.cos(theta) + 0.0065const bdLat = z * Math.sin(theta) + 0.006return [bdLng, bdLat]
}/*** 百度坐标系转国测局J02(火星坐标系 (GCJ-02))* @param lon* @param lat* @returns {[*,*]}*/
const bdtogcj02 = (lon, lat) => {const x = lon - 0.0065const y = lat - 0.006const z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI)const theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI)const ggLng = z * Math.cos(theta)const ggLat = z * Math.sin(theta)return [ggLng, ggLat]
}

3.路由的两种参数写法

// 命名的路由 (这里的name 要跟路由的name一致)
router.push({ name: 'user', params: { userId: '123' }})
// 带查询参数,变成 /register?plan=private
router.push({ path: '/register', query: { plan: 'private' }})

4.echarts Y轴有负值时的坐标轴对齐

 xAxis: {axisLine: {onZero: false  // 坐标轴与负刻度对齐}
}

三、需求技术

1.图片解析专题
注意点:
1)用exif-js解析图片信息的话,必须要上传原图,照片用苹果手机拍摄数据最全
2)使用exif-js解析出了图片的时间和地址信息,地址信息需要对数据进行计算出经纬度,并经过坐标系转换后再用高德地图geocoder.getAddress()获取。
3)pc端图片解析数据预研结论:前提得是原图且不被修改,苹果手机照片可以解析出位置和时间,安卓手机(华为、oppo、vivo、小米手机)只能解析出时间。
当前页引入:import EXIF from ‘exif-js’

//img标签加id
//js代码const img = document.getElementById(file.uid)EXIF.getData(img, async function () {const info = EXIF.getAllTags(this)console.log('图片时间', info.DateTime)//获取经度数据数组const tagj = EXIF.getTag(this, 'GPSLongitude')//获取纬度数据数组const tagw = EXIF.getTag(this, 'GPSLatitude')if (tagj && tagw) {//计算经度const lng = tagj[0] + tagj[1] / 60 + tagj[2] / 60 / 60//计算纬度const lat = tagw[0] + tagw[1] / 60 + tagw[2] / 60 / 60//初始化AMap,创建Geocoder()this.geocoder = new AMap.Geocoder()this.geocoder.getAddress(//WGS84转国测局J02(火星坐标系 (GCJ-02))方法 wgs84togcj02(lng, lat),function (status, result) {if (status === 'complete' && result.info === 'OK') {// result为对应的地理位置详细信息console.log('result===', result)console.log('address', result.regeocode.formattedAddress)}})}})

2.联级组件的懒加载为了不让最后一级可以加载,需要在数组里加上leaf: true
3.计算字符数量,中文+1,其他+0.5,为了方便做宽度外悬浮显示,宽度内悬浮不显示

export function countFullNum(str) {let count = 0const arr = str.split('')arr.forEach(item => {//如果是中文的话就只算1个字符,其他的都算半个字符if (item.match(/[\u4e00-\u9fa5]/g)) {count = count + 1} else {count = count + 0.5}})return count
}

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

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

相关文章

发布技术路线图!美国量子计算公司QuEra公开三年OKR

​编辑丨慕一 编译/排版丨琳梦 卉可 深度好文&#xff1a;1100字丨8分钟阅读 近期&#xff0c;美国量子计算公司QuEra Computing宣布了一系列关于容错量子计算机的战略路线图&#xff0c;该路线图从2024年开始&#xff0c;最终目标是打造具有100纠错逻辑量子比特的系统。 在…

银行数据仓库体系实践(10)--汇总指标层和集市模型设计

建立多层次的数据访问服务体系&#xff0c;有力提升数据仓库的价值。基于指标汇总层、集市层、可以提供面向业务人员的即席数据查询、以及面向应用开发者的数据接口、应用访问接口&#xff0c;满足不同类型应用的需要。 1、汇总指标层模型设计原则及步骤 1.1建设目标&#xff…

Blender教程(基础)-面的细分与删除、挤出选区-07

一、Blender之面的细分 新建一个立方体&#xff0c;在编辑模式下、选中一个面。 在选中的面上单击右键弹出细分选项&#xff0c;选择细分。 在选中细分后、会默认细分1次。修改细分次数在左下角 二、Blender之面的删除 选择中需要操作的面&#xff0c;在英文状态下按X键弹…

Flutter开发2:安装Flutter

在本篇博客中&#xff0c;我们将详细介绍如何安装Flutter开发环境。安装Flutter是开始使用Flutter进行跨平台移动应用开发的第一步。让我们开始吧&#xff01; 官方安装文档 步骤1&#xff1a;下载Flutter SDK 打开浏览器&#xff0c;访问Flutter官方网站&#xff1a;https://…

SSRF靶场实践(作业)

Pikachu靶场 进入ssrf的页面&#xff0c;点击连接&#xff0c;发现url中记载了另一个url的内容 通过加载百度的网址发现可以返回内容 利用伪协议进行读取本地文件powershell.exe&#xff1b;不能执行&#xff0c;只能读取 查看源码&#xff0c;发现是通过curl_exec()读取网页/…

uniapp的安卓升级功能说明

目录 1.实现思路 2.app代码示例 3.说明 1.实现思路 ①将安装包存储在后台服务器。 创建版本信息表&#xff0c;存储安装包的相关信息。保存安装包的名称&#xff0c;版本号&#xff0c;网络地址&#xff0c;是否强制升级&#xff0c;发布时间信息及升级内容等。表结构如下&…

如何在Excel中清除单元格的格式?这里有详细步骤

Microsoft Excel提供了大量样式选项来自定义电子表格的外观。但是&#xff0c;如果你需要删除格式&#xff0c;则可以很容易地删除选定单元格和整个工作表的格式。我们将向你展示如何操作。 ​注意&#xff1a;清除格式只会删除文本的样式&#xff1b;将保留你的实际文本。 如…

java.util.LinkedHashSet cannot be cast to java.util.List 的解决方案

出现 “java.util.LinkedHashSet cannot be cast to java.util.List” 的错误&#xff0c;通常是因为你试图将一个 LinkedHashSet 对象直接强制转换为 List 类型。在 Java 中&#xff0c;LinkedHashSet 和 List 是两种不同的集合类型&#xff0c;不能直接进行转换。LinkedHashS…

USB清理软件USBclean轻松清理.DS_Store,Thumbs.db,.Spotlight文件

USBclean for Mac是一款Mac上的USB清理工具&#xff0c;USBclean mac版能够帮助我们快捷方便地为你清理外部磁盘垃圾文件&#xff0c;它支持将.DS_Store, Thumbs.db, .Spotlight 以及回收站中的垃圾文件进行清理。操作也十分简单&#xff0c;只需要将要清理的外部磁盘拖拽到USB…

Linux编辑器之vim的使用

文章目录 一、vim简介二、vim的基本概念三、vim的基本操作四、vim正常模式命令集移动光标删除文字复制替换撤销上一次操作更改跳至指定的行vim末行模式命令集列出行号跳到文件中的某一行查找字符保存文件离开vim 五、进阶vim玩法打开文件批量注释代码执行shell命令指定注释窗口…

harmony开发ohpm mac环境配置

Mac电脑 安装 Ohpm &#xff5c;HarmonyOS 安装 Ohpm ohpm环境配置好后&#xff0c;执行ohpm会报如下的错 ohpm has not been initialized yet. Execute the init script to initialize it first. 解决办法 鸿蒙OS开发&#xff0c;解决报错“ohpm has not been initialized yet…

关于Gitlab用户登录提示无限重定向循环ERR_TOO_MANY_REDIRECTS

#工作笔记# 查阅了网上所有相关的记录&#xff0c;都没有解决gitlab登录/users/sign_up/welcome提示ERR_TOO_MANY_REDIRECTS&#xff0c;好在最终解决了&#xff0c;记录在此。 先说下起因&#xff1a; github哼哼不想用了&#xff0c;原因太多&#xff0c;所以内部讨论用git…

3D人体运动重建

目录 MotioNet FLEX 人格网格重建&#xff1a; VirtualMarker 虚拟人体网格重建 GraMMaR 数据集&#xff1a; MotioNet https://github.com/Shimingyi/MotioNet FLEX https://github.com/BrianG13/FLEX 人格网格重建&#xff1a; CVPR2023&#xff1a;IDEA与清华提出首…

远程访问@HttpExchange

提示&#xff1a;这是SpringBoot3以上的新特性。 远程访问HttpExchange 一、webClient二、Http 服务接口的方法定义三、声明式 HTTP 远程服务1.组合使用注解2.使用单个注解3.定制 HTTP 请求服务 四、总结1.部分方法过时2.过时的方法详解 远程访问是开发的常用技术&#xff0c;一…

java中实现事务的两种方式:编程式事务和声明式事务

涉及到与数据库交互就必须会用到事务&#xff0c;如果一个方法中需要用到事务的地方没有使用事务就会造成数据不一致的风险&#xff0c;进而导致比较严重的bug&#xff0c;比如扣款时&#xff0c;账户的余额已经进行了扣减但是相应的订单没有生成&#xff0c;这种涉及账目的问题…

方法阻塞的解决方案之一

1、简单使用 一个h一个cpp文件 #pragma once #include <iostream> #include <thread> #include <atomic> #include <chrono> #include <string>class Person {public:struct dog {std::string name;int age;};public:void a(std::atomic<bo…

设计模式篇---备忘录模式

文章目录 概念结构实例总结 概念 备忘录模式&#xff1a;在不破坏封装的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;像这样可以在以后将对象恢复到原先保存的状态。 就好比我们下象棋&#xff0c;下完之后发现走错了&#xff0c;想要回退…

【C++】美感(beautiful)

题目描述 寿寿喜欢有美感的序列。 对于寿寿来说一个序列是有美感的&#xff0c;当且仅当这个序列每两个相邻的数的和是m的倍数。特别的&#xff0c;寿寿认为长度为1的序列也是具有美感的。 寿寿现在随便在纸上写了一个长度为n的序列a&#xff0c;这个序列目前还不具有美感。因此…

Unity 自动轮播、滑动轮播

如图所示&#xff0c;可设置轮播间隔&#xff0c;可左右滑动进行轮播 1.在UGUI创建个Image&#xff0c;添加自动水平组件 2.添加并配置脚本 3.代码如下&#xff0c;都有注释 using UnityEngine; using UnityEngine.UI;public class IndicatorManager : MonoBehaviour {public …

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称&#xff1a;基于LVQ神经网络的乳腺肿瘤诊断&#xff08;类型分类&#xff09; 版本日期&#xff1a;2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院…