民治做网站公司discuz网站建设

web/2025/10/3 11:28:34/文章来源:
民治做网站公司,discuz网站建设,wordpress主题缩略图不显示,机关网站建设工程总结起因 七月份要去某厂报道了#xff0c;异地租房的时候发现想租一个有公司班车的地方#xff0c;却不知道哪里有班车。辗转流传出班车手册后发现搜索实在是太不方便了#xff0c;于是有了一个主义#xff0c;想做一个可以搜索房子地址#xff0c;找出附近班车点#xff08… 起因 七月份要去某厂报道了异地租房的时候发现想租一个有公司班车的地方却不知道哪里有班车。辗转流传出班车手册后发现搜索实在是太不方便了于是有了一个主义想做一个可以搜索房子地址找出附近班车点类似大众点评的定位搜索附近餐馆的功能。现在做的差不多了发现好像本来公司就有做这个东西。。权当学一下一些位置匹配的技术了。最后成果是这样子的 大头针是输入的位置福田中学附近的蓝点就是一个一个站点。由于一个站点他会在上班下班夜班不同的线路的不同站点位置会在不同时刻到达因此聚合为多个同一站点的数据会聚合为一个点。点击蓝色的站点就会在下面显示出这个站点所在的所有线路。 具体实现 下面将分为几个步骤讲一下具体使用了什么方法什么技术 1. 原始数据转换成我们需要的数据 一开始拿到的是excel手册所以我们有的原始数据是长成这样的忽略的从excel中导出的步骤[A(B门口)(07:30)→C(政府前100米天桥下)(07:45)→D(2站台前10米)→E→F(09:12), ...路线二, ...路线三]然后我们需要做的事情是 从数组里把每一条线路的站点拆分成一个个独立的单元 这一步比较简单str.split(→) 每一个单元分离出站点和时间 这一步要做的就多一点点了需要用到正则匹配而且因为站点的名字其实是有多种的需要考虑到多种情况。因此我的方法是 先用/(.*)(\([0-9:]*\))/分离时间和站点因为只有时间是左右括号内只包含数字和:的。实际上站点名称里有一些非法字符因此还需要进行一步过滤station.replace(/([^\u4e00-\u9fa5\(\)\d])/g, ) 每一个站点获取到经纬度 这个就没啥好说的了。。调用腾讯地图的api不过由于调用api有每秒请求数和每日请求数的限制用异步回调加定时器的方式模拟了休眠然后运行脚本慢慢等结果返回就好了。2. 怎么在一堆经纬度表示的点里找出附近的点呢geohash 我参考的资料简单介绍一下geohash就是把经纬度按照一定的规则去映射出一个hash字符串在后续搜索的时候只要hash字符串匹配程度足够高就可以认为这两个点是相近的。具体的内容可以阅读上面的参考资料。下面给我javascript代码的实现。 function geoHashCode (num, range) {range [-range, range]let retCode []for (let i 1; i 20; i) {let middle (range[0] range[1]) / 2let code num middle ? 0 : 1if (code 0) {range[1] middle} else {range[0] middle}retCode.push(code)}return retCode } function geoHash ({ lng, lat }) { // lng: 经度 lat 纬度let lngCode geoHashCode(lng, 180)let latCode geoHashCode(lat, 90)// 偶数位放经度奇数位放纬度把2串编码组合生成新串let code []for (let i 0; i 40; i) {if (i % 2 0) { // 偶数code[i] lngCode[i / 2]} else {code[i] latCode[(i - 1) / 2]}}const base32 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, b, c, d, e, f, g, h, j, k, m, n, p, q, r, s, t, u, v, w, x, y, z]let newCode []const splitLen 5for (let i 0; i 8; i) {newCode.push(code.slice(i * 5, i * 5 5).join())}// base32编码newCode newCode.map(item base32[parseInt(item, 2)]).join()return newCode }经过上述步骤我们可以得到什么呢一个很大的list每一个单元为 {station:班车名字,location:该点的经纬度,name:属于上班下班夜班中的哪一个,lineIndex:属于该班车类型的拿一条线路,stationIndex:属于该线路里的第几个站点,time:到站时间,geohash:该点经纬度映射出的的geohash } 到这一步其实已经可以做到输入一个点匹配出附近班车的点了只要把输入的点通过api查询出经纬度再转化成geohash最后遍历这个list把匹配程度足够高的点挑出来就可以了。但是其实我们有5000个这样的点在页面上不断做这种遍历匹配我觉得挺蠢的于是我想到构建一个匹配树。把一组hash映射成一个匹配森林然后输入点的geohash不断寻找匹配节点去遍历这个森林的时候可以完全避开不匹配的项去提高匹配效率。举个例子就是: 我们根据左侧的hashList映射出右侧的匹配森林由于geohash的精度关系是会出现多个站点的geohash是一样的。因此我在叶子节点里用一个数组存放所有的对应站点信息。当我们要匹配wsc2时我们可以一直搜索到叶子节点取出‘站点1站点2’,但是有时候我们要搜索的geohash没办法匹配到叶子节点我们就要先判断当前精度是否足够高误差会不会太大比如我们认为匹配了三个前缀字符的时候精度就足够高了那么搜索ws11的时候由于只匹配到两个不应返回结果。而匹配wsc3的时候可以匹配到前缀字符wsc虽然没有到叶子节点但是我们可以认为以wsc为根大概是那个意思你们应该明白的树的所有叶子节点都可以认为是这个geohash的附近节点也就是返回站点1站点2站点6。至于误差范围可以看上面的参考文献。 3.构建页面需要的内容 腾讯地图或者其他地图的开放接口获取输入地址转化为经纬度和geohash查找树获取匹配的地址在list中的index聚合相同经纬度的点为一个绘制点 将经纬度作为键名构建一个map绘制附近的点为蓝色输入的点为大头针绑定附近的点的点击事件渲染列表生成该点的所有线路信息其他 这个小玩具就这么结束了中间其实还有一些值得一提的地方。我也就一起记下来了感觉还是挺有趣的做一些好玩的东西。 定时器异步模拟休眠 必备知识点 sync/await只是因为这么写看起来很爽没有别的意思function sleep () {return new Promise((resolve, reject) {setTimeout(() {resolve()}, 500)}) } (async function () {let i locationList.length // 计数器let newList []while (i ! -1) {let item locationList.pop() // 取出要查询的点let locationtry {if (locationMap[item.station]) { // 如果这个点请求过了就直接用缓存信息location locationMap[item.station]} else {location await getXY(item.station) // 调用api获取经纬度locationMap[item.tation] location // 缓存经纬度信息await sleep() // 休眠}item.location locationitem.geoHash geoHash(location) // 获取geohashnewList.push(item)} catch (e) { // 请求失败了把这个点推回去重新请求console.log(e)locationList.push(item)i}i--console.log(i)} })()数据劫持 其实一开始设计的时候没有查询地点附近的班车站点功能的。而是显示上班线路下班线路的功能。不同线路之间的转换用了数据劫持的方式也就是vue实现数据绑定的Object.defineProperty还真的挺有意思的建议大家也可以用这个试一下。另外还有单页应用路由里面的hashchange事件。这些都是些可以再创造的api。

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

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

相关文章

网站运营建设的培训班wordpress flash 插件

视频1:https://live.csdn.net/v/182207 视频2:https://live.csdn.net/v/182208 视频3:https://live.csdn.net/v/182209

茶的网站制作网站建设360

numpy中表示向量和矩阵乘法的有四种"*"、outer、dot、multiply。1、关于 "*" 的用法"*" 也为对于元素的乘积,但是 "*" 作为乘法运算时,必须满足 numpy 的 broadcasting(广播) 的原则 ,当两个矩阵相乘…

asp网站代码 部分封装一个网站需要几个人做

1. 引言 在Spring框架中,类加载机制是一个至关重要的环节,关系到Spring容器如何动态地加载、解析和管理应用程序中的类。其中,“准备”阶段作为类加载过程中的一个关键步骤,对于理解整个类加载机制具有重要意义。本文将对Spring类…

素材模板网站网络销售公司经营范围

文章目录 前言Chat2DB介绍Chat2DB地址下载安装 Chat2DB配置Chat2DB使用1、自然语言转sql2. SQL解释3. SQL优化4. SQL转换 写在最后 前言 随着人工智能的发展,各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线…

整站优化多少钱python做网站的 框架

Virtualenv(虚拟环境) VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响.这样有很多优点,宝宝们要记住哦,比如: 在没有权限的情况下安装新套件 不同应用可以使用不同的套件版本 套件升级不影响其他应用 …

做婚恋网站wordpress悬浮登录插件

目录 前文 回望页表 一,什么是线程 二,使用 pthread_create (线程创建) 三,线程控制 1 ,线程共享进程数据,但也拥有自己的一部分数据: 2, 线程 VS 进程优点 3,…

论述网站建设整个流程建设网站有哪些参考文献

初心伟大的艺术品不必追随潮流,他本身就能引领潮流。课前准备软件安装【2019(上)】《三维建模与动画设计》【2019年下学期】第一节:选修介绍及选修人数确定【2019年下学期】第二节:2D&3D设计之百事可乐图标设计【2019年下学期】第三四节&…

以网站建设为开题报告网站电话转化率

教程链接 https://www.youtube.com/watch?vCYiHNbAIp4s 前提 虚幻引擎5.1之后,项目设置里的input选项,默认会有一条警告,告知旧的input系统已经不能用了。 做法 在content文件夹下新建一个input按钮 input文件夹里面分成两部分内容 1.…

dede 网站名称 空的免费销售网站模板

长按弹出修改后:charles如果不配置SSL通用证书;会导致HPPTS协议的域名抓取失败/乱码的现象;现在SSL越来越多,很多博客都上了SSL,支付相关的行业更是基础配置;charles配置SSL证书,算起来很简单&a…

宠物网站 html模板网站开发及后期维护

2024中国(杭州)国际数字物流技术与应用展览会 2024年7月8-10日 | 杭州国际博览中心 同期举办:2024长三角快递物流供应链与技术装备展览会 数字贸易创新引领合作动能 《十四五规划》明确指出关于“加快数字化发展,建设数字中国…

猪八戒网做网站被骗网站开发建设用的软件

在Spring Boot Mybatis 中,使用Repository失效 在springboot 中,给mapper的接口上加上Repository,无法生成相应的bean,从而无法Autowired,这是因为spring扫描注解时,自动过滤掉了接口和抽象类,这种情况下可…

家居企业网站建设资讯做 ps pr 赚钱的 网站

文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下,多个线程可以并发地执行,访问共享资源(如内存变量、文件、网络连接 等)。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解…

做外贸公司 网站wordpress模板定做

镜像官网 操作系统基础镜像 busybox Alpine CentOS Ubuntu Debian 编程语言基础镜像 Java基础镜像 Python基础镜像 NodeJs基础镜像 应用基础镜像 Nginx基础镜像 Tomcat基础镜像 Jetty基础镜像 其它基础镜像例子 Maven基础镜像 Jenkins基础镜像 GitLab基础镜像 如何选择Docker基…

汽车网站建设公司哪家好百度网站建设公司

全世界只有3.14 % 的人关注了爆炸吧知识来看越南学生拍摄的一组图,主题是老师和文具“撞衫”!老师你和我的胶水撞了!老师你和我的笔袋撞了!老师你和我的手机壳撞了!这个铅笔和老师好像啊书皮和老师很像老师今天穿得像面…

资源库建设网站微信平台制作网站开发

【JavaEE】进阶 个人博客系统(4) 文章目录 【JavaEE】进阶 个人博客系统(4)1. 增加博文1.1 预期效果1.1 约定前后端交互接口1.2 后端代码1.3 前端代码1.4 测试 2. 我的博客列表页2.1 期待效果2.2 显示用户信息以及博客信息2.2.1…

旅游网站建设案例分析北京个人制作网站有哪些

本文深入研究Vuex,一个Vue.js状态管理库。我们将介绍创建它是为了解决的问题、其背后的核心概念、如何设置它,当然,还将在每一步中使用代码示例。 Vuex是一个由Vue团队构建的状态管理库,用于管理Vue.js应用程序中的数据。它提供了一种集中管理跨应用程序使用的数据的方式,…

没有数据库的网站深圳市建设交易宝安

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…

优秀的html5网站做区块链在哪个网站

目录 总体流程介绍 1. 从 Kafka 读取数据 2. 使用 UDF 进行数据解析 3. 将

网站设计公司网站设计公司网站经营性备案难不难

目录 📝认识文件 🚩树型结构组织 和 目录 🎈绝对路径和相对路径 🚩文件类型 📝文件系统操作 🎈File 概述 🎈File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…

网站搭建平台选哪个便宜网站建设哪家好

一直有一个做机器人的梦,所以从去年起放弃了十多年的软件开发,开始进入嵌入式领域,先后在.Net Micro Framework 项目中完成了Ti DM335上的GPIO、I2C、USB等驱动,方浅浅地了解了什么叫嵌入式开发。 对非软件也非硬件出身的我&#…