Dart调用JS对10000条定位数据滤波
使用Dart调用JS,还是为了练习跨语言调用;
一、编写对应的JS代码
平时在开发时不推荐将算法放在JS里,我这里是简单的做一下数据过滤;
首先生成一些随机定位数据,在实际开发中可以使用真实数据;
// 随机定位点
function getRandomCoordinate() {return {latitude: getRandomFloat(110, 115),longitude: getRandomFloat(110, 115)};
}// 随机数
function getRandomFloat(min, max) {return min+Math.random()*(max-min);
}
将数据添加到对应容器中;
// 滤波
function filterData() {console.log("开始滤波-----");var data = [];// 添加10000条随机定位点for (let index = 0; index < 10000; index++) {let coordinate = getRandomCoordinate();data.push(coordinate);}console.log(data);averageFilter(data);
}
滤波时需要计算弧面距离;
// 计算定位之间的距离
function distance(lat1, lon1, lat2, lon2) {const R = 6371; // 地球半径,我使用的是平均值,单位公里const dLat = deg2rad(lat2-lat1); // 角度转弧度const dLon = deg2rad(lon2-lon1); // 同上const dL1 = deg2rad(lat1);const dL2 = deg2rad(lat2);// 开始求弧面距离了const a = Math.sin(dLat/2)*Math.sin(dLon/2)+Math.cos(dL1)*Math.cos(dL2)*Math.sin(dLon/2)*Math.sin(dLon/2);if (a < 0) {return 0;}const c = 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a));const d = R*c; // 最终距离获得return d; // 公里值
}// 弧度转换
function deg2rad(degrees) {return degrees*(Math.PI/180);
}
开始滤波;
// 平均值滤波
function averageFilter(data) {var totalDistance = 0; // 总距离for (let index = 0; index < data.length-1; index++) {const l1 = data[index];const l2 = data[index+1];totalDistance += distance(l1.latitude, l1.longitude, l2.latitude, l2.longitude);}const averageDistance = totalDistance/(data.length-1);// 开始过滤var filters = [];const value = averageDistance*1.5; // 使用1.5倍平均值作为阀值,可调整for (let index = 0; index < data.length-1; index++) {const l1 = data[index];const l2 = data[index+1];const d = distance(l1.latitude, l1.longitude, l2.latitude, l2.longitude);if (d <= value) {filters.push(l2);}}console.log("平均值滤波结果");console.log(filters);console.log("------------");
}
Dart中调用JS代码;
import 'dart:js' as js;void main() {js.context.callMethod("filterData", []);exit(0); // 退出
}
运行结果过滤了一部分距离过远跳跃的定位数据;

JS也可以调用Dart方法,可以将对应的Dart方法当作参数传给JS,然后JS使用闭包接收,然后可以在需要时调用闭包。
相关文章:
Dart调用JS对10000条定位数据滤波
使用Dart调用JS,还是为了练习跨语言调用; 一、编写对应的JS代码 平时在开发时不推荐将算法放在JS里,我这里是简单的做一下数据过滤; 首先生成一些随机定位数据,在实际开发中可以使用真实数据; // 随机定…...
大模型应用实践:AIGC探索之旅
随着OpenAI推出ChatGPT,AIGC迎来了前所未有的发展机遇。大模型技术已经不仅仅是技术趋势,而是深刻地塑造着我们交流、工作和思考的方式。 本文介绍了笔者理解的大模型和AIGC的密切联系,从历史沿革到实际应用案例,再到面临的技术挑…...
【.NET Core】异步编程模式
【.NET Core】异步编程模式 文章目录 【.NET Core】异步编程模式一、概述二、基于任务的异步模式(TAP)2.1 TAP模式命名、参数和返回类型2.2 TAP初始化异步操2.3 TAP如何编译2.4 手动生成TAP方法2.5 混合方法实现TAP2.6 TAP中Await挂起执行2.7 TAP中使用Y…...
macOS通过外置驱动器备份数据
通过外置驱动器备份数据(谨慎操作) 1.将外置驱动器连接到您的 Mac。驱动器容量应等于或大于您当前的启动磁盘。驱动器还应该是您可以抹掉的。 2.使用 macOS 恢复功能 抹掉外置驱动器,然后将 macOS 安装 到外置驱动器上。确保您选择的外置驱动…...
rtsp解析视频流
这里先说一下 播放rtsp 视频流,尽量让后端转换一下其他格式的流进行播放。因为rtsp的流需要flash支持,现在很多浏览器不支持flash。 先说一下这里我没有用video-player插件,因为它需要用flash ,在一个是我下载flash后,还是无法播放…...
【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第3节-云产品流转配置
🌟博主领域:嵌入式领域&人工智能&软件开发 本节目标:本节目标是进行云产品流转配置为后面实际的手机APP的接入做铺垫。云产品流转配置的目的是为了后面能够让后面实际做出来的手机APP可以控制STM32/MCU,STM32/MCU可以将数…...
Spring Cloud Config相关问题及答案(2024)
1、什么是 Spring Cloud Config,它解决了哪些问题? Spring Cloud Config 是一个为微服务架构提供集中化外部配置支持的项目。它是构建在 Spring Cloud 生态系统之上,利用 Spring Boot 的开发便利性,简化了分布式系统中的配置管理…...
【Azure 架构师学习笔记】- Azure Databricks (4) - 使用Azure Key Vault 管理ADB Secret
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (3) - 再次认识DataBricks 前言 Azure Databricks有access token,是具有ADB内部最高权限的token。在云环境中这些高级别权限的sec…...
[每周一更]-(第50期):Go的垃圾回收GC
参考文章: https://juejin.cn/post/7111515970669117447https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/https://colobu.com/2022/07/16/A-Guide-to-the-Go-Garbage-Collector/https://liangyaopei.github.io/2021/01/02/g…...
【嵌入式学习笔记-01】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误
【嵌入式学习笔记】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误 文章目录 什么是UC?计算机系统分层什么是操作系统? 环境变量什么是环境变量?环境变量的添加&am…...
【动态规划】LeetCode-10. 正则表达式匹配
10. 正则表达式匹配。 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 …...
lenovo联想拯救者8.8英寸掌上游戏机Legion Go 8APU1(83E1)原装出厂Windows11预装系统
链接:https://pan.baidu.com/s/1d586XWXcAWVxlLyV2Oku7Q?pwdd74t 提取码:d74t 系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小:…...
经典目标检测YOLO系列(一)复现YOLOV1(4)VOC2007数据集的读取及预处理
经典目标检测YOLO系列(一)复现YOLOV1(4)VOC2007数据集的读取及预处理 之前,我们依据《YOLO目标检测》(ISBN:9787115627094)一书,提出了新的YOLOV1架构,并解决前向推理过程中的两个问题,继续按照此书进行YOLOV1的复现。 经典目标检…...
Android Studio xml布局代码补全功能失效问题
这里写目录标题 前言:问题描述原因分析:解决方案:1.更新 Android Studio 版本2.原版本解决XML补全失效 小结 前言: 在开发过程中,你可能遇到很多奇奇怪怪的问题。Android Studio 编译器出现问题也是常有的事情&#x…...
算法每日一题:队列中可以看到的人数 | 单调栈
大家好,我是星恒 今天是一道困难题,他的题解比较好理解,但是不好想出来,接下来就让我带大家来捋一捋这道题的思路,以及他有什么特征 题目:leetcode 1944有 n 个人排成一个队列,从左到右 编号为 …...
报表控件Stimulsoft 2023回顾:都做了哪些产品的改变?
在2023年过去一年中,报表控件Stimulsoft 针各类控件都做了重大改变,其中新增了某些产品、同时加强了很多产品的性能和UI设计,更加符合开发者需求,下面就跟随小编一起来回顾,具体都有哪些↓↓↓ Stimulsoft Ultimate &…...
Mybatis缓存实现方式
文章目录 装饰器模式Cache 接口及核心实现Cache 接口装饰器1. BlockingCache2. FifoCache3. LruCache4. SoftCache5. WeakCache 小结 缓存是优化数据库性能的常用手段之一,我们在实践中经常使用的是 Memcached、Redis 等外部缓存组件,很多持久化框架提供…...
C#用StringBuilder高效处理字符串
目录 一、背景 二、使用StringBuilder便捷、高效地操作字符串 三、实例 1.源码 2.生成效果 四、实例中知识点 1.StringBuilder 构造函数 (1)定义 (2)重载 (3)StringBuilder() (4&…...
python开发案例教程-清华大学出版社(张基温)答案(4.2)
目录 练习 4.2 1. 代码分析题 2. 程序设计题 练习 4.2 1. 代码分析题 阅读下面的代码,给出输出结果。 (1) class A:def __init__(self,a,b,c):self.xabca A(3,5,7);b getattr(a,x);setattr(a,x,b3);print(a.x)18 (2&…...
【MATLAB】【数字信号处理】线性卷积和抽样定理
已知有限长序列:xk1,2,1,1,0,-3, hk[1,-1,1] , 计算离散卷积和ykxk*h(k) 。 程序如下: function [t,x] My_conv(x1,x2,t1,t2,dt) %文件名与函数名对应 %自写的卷积函数 x conv(x1,x2)*dt; t0 t1(1) t2(1); L length(x1) length(x2)-2; t t0:dt…...
SDMatte新手入门:交互式点选,让复杂抠图变简单
SDMatte新手入门:交互式点选,让复杂抠图变简单 1. 什么是SDMatte? SDMatte是一款基于扩散模型的交互式图像抠图工具,由vivoCameraResearch团队开发。它通过简单的点选操作,就能实现专业级的图像抠图效果,…...
PyArmor解包终极指南:3种高效逆向分析技巧快速掌握代码解密核心技术
PyArmor解包终极指南:3种高效逆向分析技巧快速掌握代码解密核心技术 【免费下载链接】PyArmor-Unpacker A deobfuscator for PyArmor. 项目地址: https://gitcode.com/gh_mirrors/py/PyArmor-Unpacker PyArmor-Unpacker是一个专为Python开发者和安全研究人员…...
告别乱码!ESP32-S3+LVGL 9.2.2驱动ILI9488显示中文的保姆级教程(附完整代码)
ESP32-S3LVGL 9.2.2中文显示实战:从乱码到完美呈现的终极指南 当你在ESP32-S3上成功驱动了ILI9488显示屏,LVGL的基础例程也跑起来了,却发现中文显示全是方块或乱码时,这种挫败感我深有体会。中文显示问题一直是嵌入式GUI开发中的…...
Meta2d.js终极指南:从零构建专业级Web SCADA与数字孪生应用
Meta2d.js终极指南:从零构建专业级Web SCADA与数字孪生应用 【免费下载链接】meta2d.js The meta2d.js is real-time data exchange and interactive web 2D engine. Developers are able to build Web SCADA, IoT, Digital twins and so on. Meta2d.js是一个实时数…...
1985–2024年武汉大学CLCD中国土地利用/覆被数据集(逐年30米栅格)|高精度长时序LUCC产品
🔍 数据简介 CLCD(China Land Cover Dataset) 是由武汉大学测绘遥感信息工程国家重点实验室李熙教授、李德仁院士团队基于Landsat系列卫星影像,结合深度学习与多源辅助数据(如夜间灯光、POI、道路网等)&…...
构建非苹果硬件的macOS运行环境:Hackintosh长期维护方案
构建非苹果硬件的macOS运行环境:Hackintosh长期维护方案 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 定位项目核心价值 Hackintosh项目作…...
dumpDex安全研究:脱壳工具在Android安全分析中的应用
dumpDex安全研究:脱壳工具在Android安全分析中的应用 【免费下载链接】dumpDex 💯一款Android脱壳工具,需要xposed支持, 易开发已集成该项目。 项目地址: https://gitcode.com/gh_mirrors/du/dumpDex 在Android应用安全分析领域&#…...
如何快速上手OneMore:OneNote插件的安装与基础设置教程
如何快速上手OneMore:OneNote插件的安装与基础设置教程 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 想要提升OneNote的使用效率吗?OneMore插…...
TypeScript迁移工具ts-migrate版本兼容性终极指南:如何确保JavaScript到TypeScript平滑升级
TypeScript迁移工具ts-migrate版本兼容性终极指南:如何确保JavaScript到TypeScript平滑升级 【免费下载链接】ts-migrate A tool to help migrate JavaScript code quickly and conveniently to TypeScript 项目地址: https://gitcode.com/gh_mirrors/ts/ts-migra…...
bert-base-chinese详细步骤:如何将test.py改造成支持流式文本处理的微服务
bert-base-chinese详细步骤:如何将test.py改造成支持流式文本处理的微服务 1. 项目背景与价值 在实际的工业场景中,我们经常需要处理大量的文本数据流。传统的批处理方式虽然简单,但无法满足实时性要求高的应用场景。比如智能客服系统需要实…...
