推荐 最新
花影流年

wanglin2/mind-map

该项目包含一个不依赖任何框架的思维导图 JavaScript 库,以及一个采用 Vue.js+ElementUI 开发的支持本地部署、功能丰富的在线思维导图应用。

17
0
0
浏览量62
万码用户

nginx-proxy-manager

它开箱即用支持 Docker 一键部署,可以让用户通过 Web 界面在线配置、管理 Nginx 服务,支持转发、重定向、SSL 证书、高级配置等功能。

11
0
0
浏览量58
赵歪歪

github-chinese

![https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FuwLJTGKB7apwEhbLa1ORogbSuVf.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FuwLJTGKB7apwEhbLa1ORogbSuVf.png) 该项目可以将 GitHub 网站的菜单栏、标题、按钮等公共组件,自动翻译成中文,适合刚接触 GitHub 的小白使用。

15
0
0
浏览量56
牛马的职场人

HabitRPG/habitica

这是一款养成类 RPG 游戏,当你完成一个现实中的待办事项后,会获得相应的经验和金币。随着你的等级提升,将会开启更多的玩法,比如购买装备、孵化宠物、职业、专属技能、组队打副本等。![https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgyKAZ3Dsvk_yE0Sh-vL6WLMZIdn.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FgyKAZ3Dsvk_yE0Sh-vL6WLMZIdn.png)

11
0
0
浏览量55
赵歪歪

imputnet/cobalt

![https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FmhZ0oPuXkXg3r9Pnvz-dLLKH1Bb.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/community/FmhZ0oPuXkXg3r9Pnvz-dLLKH1Bb.png) 这是一款免费且开源的媒体下载工具,用户只需输入链接即可轻松下载视频和音频文件。它开箱即用、操作简单,支持从 YouTube、Instagram、TikTok 等多个平台获取内容,并提供多种下载选项。

8
0
0
浏览量46
爬虫爬呀爬

cesium 请问如何通过点击车辆模型,实现视角跟随?

let socketInfo = 'xxxxxx' let ws = new WebSocket(socketInfo) let pingInterval = ref(null) // 心跳间隔ID let viewer = null let entity = null let polylineInitialized = false; // 轨迹线是否已初始化的标志 let polylineEntity = null; // 用于存储轨迹线实体 let pointEntity = null; const positionParams = []; // 用于存储所有的位置参数数据 const bufferLimit = 50; // 缓冲区大小限制 // 加载websocket function webValue() { // 初始Websocket const onOpen = () => { const data = JSON.stringify({ command: 1, serializeAlgorithm: 1, token: window.localStorage.getItem('token') }); ws.send(data); // 发送JSON字符串 // 设置心跳间隔为5秒 pingInterval.value = window.setInterval(() => { const pingMessage = JSON.stringify({ command: 2, serializeAlgorithm: 1 }); ws.send(pingMessage); }, 5000); }; // 接收websocket数据 const onMessage = async (event) => { const data = JSON.parse(event.data); if (data.data == undefined) { console.log('未响应'); } else { processPositionParams(data.data); updateCarModelPosition(positionParams);// 实时更新车辆移动位置 if (!polylineInitialized) { initializePolyline(positionParams); // 初始化轨迹线 polylineInitialized = true; // 标记轨迹线已初始化 } else { updatePolylinePosition(positionParams); // 更新轨迹线位置 } } }; // 封装处理返回的参数 function processPositionParams(data) { const targetingTypes = { 0x10: 'RTK', 0x11: 'UWB', 0x12: '融合' }; const newPositionParam = { TargetingType: targetingTypes[data.type], UID: data.uid, Angle: data.angle, Height: data.height, longitude: data.longitude, latitude: data.latitude }; positionParams.push(newPositionParam); // 超过缓冲区大小限制时移除最旧的位置参数数据 if (positionParams.length > bufferLimit) { positionParams.shift(); } const labelText = `终端ID:${data.uid},定位类型:${targetingTypes[data.type]}\n经度:${data.longitude},纬度:${data.latitude}\n角度:${data.angle},高度:${data.height}`; point(positionParams, labelText);// 更新实体点位置信息 } const onClose = () => { window.clearInterval(pingInterval.value); // 清除心跳间隔定时器 console.log('Websocket连接关闭'); webValue(); }; const onError = (error) => { console.log('Websocket连接错误'); ws.close(); window.clearInterval(pingInterval.value); // 清除心跳间隔定时器 webValue(); }; ws.addEventListener('open', onOpen); ws.addEventListener('message', onMessage); ws.addEventListener('close', onClose); ws.addEventListener('error', onError); } ------------------------------------- // 绘制车辆模型和轨迹点、轨迹线 let checkedPoint = ref(true); let checkedLines = ref(false); // 保存checkedPoint和checkedLines的值到LocalStorage function saveCheckedValues() { localStorage.setItem('checkedPoint', JSON.stringify(checkedPoint.value)); localStorage.setItem('checkedLines', JSON.stringify(checkedLines.value)); } // 从LocalStorage中获取checkedPoint和checkedLines的值 function loadCheckedValues() { const storedCheckedPoint = localStorage.getItem('checkedPoint'); const storedCheckedLines = localStorage.getItem('checkedLines'); if (storedCheckedPoint) { checkedPoint.value = JSON.parse(storedCheckedPoint); } if (storedCheckedLines) { checkedLines.value = JSON.parse(storedCheckedLines); } } // 监听checkedPoint和checkedLines的变化,并保存到LocalStorage watch([checkedPoint, checkedLines], saveCheckedValues, { deep: true }); // 在页面加载时加载checkedPoint和checkedLines的值 window.addEventListener('load', loadCheckedValues); // 车辆模型 let carModelData = null; let shouldFollowCar = false; // 标志位 function updateCarModelPosition(positions) { if (positions.length === 0) { return; } const latestPosition = positions[positions.length - 1]; const cartesian3 = Cesium.Cartesian3.fromDegrees(latestPosition.longitude, latestPosition.latitude, 0.4); if (!carModelData) { createCarModel(cartesian3, latestPosition.Angle); } else { carModelData.position = cartesian3; const headingPitchRoll = new Cesium.HeadingPitchRoll( Cesium.Math.toRadians(latestPosition.Angle + 90), Cesium.Math.toRadians(0), Cesium.Math.toRadians(0) ); carModelData.orientation = Cesium.Transforms.headingPitchRollQuaternion(cartesian3, headingPitchRoll); } } function createCarModel(cartesian3, angle) { const headingPitchRoll = new Cesium.HeadingPitchRoll( Cesium.Math.toRadians(angle + 90), Cesium.Math.toRadians(0), Cesium.Math.toRadians(0) ); const scaleByDistance = new Cesium.NearFarScalar(200, 120, 1200, 0.6); const distanceDisplayCondition = new Cesium.DistanceDisplayCondition(0, 10000); carModelData = viewer.entities.add({ position: cartesian3, orientation: Cesium.Transforms.headingPitchRollQuaternion(cartesian3, headingPitchRoll), model: { uri: "http://127.0.0.1:5501/car/scene.gltf", scale: 75, scaleByDistance, distanceDisplayCondition, }, id: 'carModel' // 添加id属性 }); } --------------------------------------------------------------- // 轨迹点 和 轨迹线 和 标签文字 let positionsArray = []; let entityList = []; function point(positions, labelText) { const cartesian3Array = []; positionsArray = positions.flatMap(pos => [pos.longitude, pos.latitude]); // 移除之前的实体点 for (const entity of entityList) { viewer.entities.remove(entity); } entityList = []; for (const position of positions) { let entityIndex = entityList.length; const cartesian3 = Cesium.Cartesian3.fromDegrees( position.longitude, position.latitude, 0.02 ); const pointLabel = new Cesium.Entity({ position: cartesian3, point: { pixelSize: 10, color: Cesium.Color.BLUE, show: checkedPoint.value, outlineColor: Cesium.Color.WHITE, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 500), scaleByDistance: new Cesium.NearFarScalar(100, 1, 300, 0.5), outlineWidth: 1, }, // label: { // text: labelText, // font: '14pt monospace', // show: new Cesium.CallbackProperty(() => { // return entityIndex === entityList.length - 1; // }, false), // style: Cesium.LabelStyle.FILL_AND_OUTLINE, // outlineWidth: 2, // verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // pixelOffset: new Cesium.Cartesian2(0, -9), // scaleByDistance: new Cesium.NearFarScalar(300, 1, 1000, 0.4), //设置随图缩放距离和比例 // scale: 1, // fillColor: Cesium.Color.WHITE,//标签的文本填充颜色。 // outlineColor: Cesium.Color.WHITE,//标签的文本轮廓颜色。 // }, }); entityList.push(pointLabel); viewer.entities.add(pointLabel); cartesian3Array.push(cartesian3); } } -------------------------------------------------------- // 创建新的轨迹线 let polylineGeometry = null; let geometryInstance = null; function initializePolyline(positions) { const positionsArray = positions.flatMap(pos => [pos.longitude, pos.latitude]); const positionsInCartesian = Cesium.Cartesian3.fromDegreesArray(positionsArray); polylineGeometry = new Cesium.PolylineGeometry({ positions: positionsInCartesian, width: 5, distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 500), scaleByDistance: new Cesium.NearFarScalar(100, 10, 500, 1), }); geometryInstance = new Cesium.GeometryInstance({ geometry: polylineGeometry, attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED) } }); const primitive = new Cesium.Primitive({ geometryInstances: geometryInstance, appearance: new Cesium.PolylineMaterialAppearance({ material: Cesium.Material.fromType(Cesium.Material.ColorType) }) }); viewer.scene.primitives.add(primitive); } // 更新轨迹线位置 function updatePolylinePosition(positions) { if (geometryInstance) { const positionsArray = positions.flatMap(pos => [pos.longitude, pos.latitude]); const positionsInCartesian = Cesium.Cartesian3.fromDegreesArray(positionsArray); polylineGeometry.positions = positionsInCartesian; geometryInstance.geometry = polylineGeometry; geometryInstance.show = checkedLines.value; } } ***

24
1
0
浏览量381
我买了30万的鞋子

vue axios请求后台接口code返回200,但是没有返回数据,请问为什么?

请求的接口信息: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/84f3cd1ac0a11ea6c8f3b396f9ca3c2d.png) 没有返回东西: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/c819d4f886fa55961a9bad4861c44060.png) 控制台报错: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250112/068fbd186f9f50585d7d15da43ebe707.png) 前端代码: import axios from 'axios' import { baseURL, taskURL } from './resource' // 3.ES6 Promise 封装方式 export function request(options) { return new Promise((resolve, reject) => { // 1.创建 axios 的实例对象 const instance = axios.create({ baseURL: baseURL, // method:"post", timeout: 300000, withCredentials: true // timeout: 50000 }) // alert( baseURL) // 3.过滤器(拦截器) instance.interceptors.response.use(res => { return res.data }, err => { console.log('来到了response拦截failure中'); console.log('err', err); if (err && err.response) { switch (err.response.status) { case 400: err.message = '请求错误' break case 401: err.message = '未授权的访问' break } } return err }) // 2.通过实例发送网络请求 instance(options).then(res => { resolve(res) }).catch(err => { reject(err) }) }) } 求大家帮个忙看看到底是哪里问题,要怎么修改,谢谢

22
1
0
浏览量359
感觉对了

如何监听到清除功能的操作?

使用EasyExcel在浏览器构建了一个在线Excel表格,现在想在右键中除了复制粘贴外加入一些其他操作,请问用那些方式比较好用? "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250107/7729b4755c9f68b42fba97f48dfb8c02.png)

23
1
0
浏览量316
博学的学渣

如何理解应用程序需要通过系统调用,来跟 Socket 层进行数据交互?

Linux 系统是通过 socket 层进行网络数据包交互的,也就是应用程序调用的 socket 提供的接口 那么对于前端开发人员,调用的接口是 node 使用的 HTTP,浏览器使用的是 Web API,没有套接字的身影,是这些第三方库底层对 socket 进行了封装么?

21
1
0
浏览量292
今天吃什么你说吧

为什么这样调用图片加载,promise 内部的后续代码不会执行了?

"jsbin - link -demo" (https://link.segmentfault.com/?enc=8A%2FzeKNgtlSKJ0KLPkyP%2Bg%3D%3D.2p%2BEiIrfrd781gNDcKPpaS8SJF4r6AHtEXqJWi9D3%2FrEof5f8%2FOQzrsM2GZrhxuaE%2FsFKk5RHWR3hcbD2AFgAA%3D%3D) promise-load function loadImageAsync(url) { return new Promise((resolve, reject) => { let img = new Image() img.src = url img.onload(()=>resolve(img)) img.onerror(()=>reject()) console.log(3); }) } loadImageAsync('https://avatarsabc.githubusercontent.com/u/54520846?s=400&u=5220402538d51b3c67cf208ea16f93cb218fe4d2&v=4').then((imgDom) => { console.log('success'); document.body.appendChild(imgDom) }).catch(() => { console.log('error-Load'); }) 为什么console.log(3) 没有执行

18
1
0
浏览量376