// 设置第一次点赋值,重新定义一个新数组,将设备号为对象名,索引值作为键值
const getListNEW = useCallback(
(params, reload, gps) => {
if (gps && markArrNew.current) {
openBus(markArrNew.current, reload, gps);
} else {
openBus(params, reload);
markArrNew.current = params;
let json = {};
if (params?.list?.length > 0) {
params.list.forEach((item, index) => {
json[item.coding] = index;
});
} else if (params?.flow_list?.length > 0) {
params.flow_list.forEach((item, index) => {
json[item.coding] = index;
});
}
console.log('json----', json);
markArrNew1.current = json;
}
},
[markArrNew.current],
);
// 判断数据是否存在于对象中,如果有必定大于-1,没有则为-1,将websocket的数组以相同的对象名放入新数组
let gps = dataNew; // websocket返回的数组
let carList = dealCarList(markArrNew.current); // 去重后的数组
let nowIndex =
markArrNew1.current[gps.device_name] > -1 ?
markArrNew1.current[gps.device_name] : -1;
console.log('nowIndex', nowIndex);
if (nowIndex >= 0 && carList[nowIndex]?.longitude) {
markArrNew2.current = markArrNew2.current || {};
markArrNew2.current[gps.device_name || gps.data.deviceNo] = dataNew;
// 每隔3秒执行一下,这个数组,不管里面有多少数据,都执行一遍,达到实时位置的效果
const throttleRef = useRef(
throttle(() => {
console.log('throttleRef', markArrNew2.current);
for (let i in markArrNew2.current) {
setGPS(i, markArrNew2.current[i]);
}
markArrNew2.current = {};
}, 3000),
).current;

高德地图使用websocket后重新设置点进行优化的更多相关文章

  1. 高德地图 Android编程中 如何设置使 标记 marker 能够被拖拽

    由于本人对智能手机真心的不太会用,我本人大概是不到3年前才买的智能手机,用以前的索尼爱立信手机比较方便小巧,平时学习工作打个电话发个短信也就够了,出去吃饭一般都是朋友拿手机去弄什么美团团购啥的,然后我 ...

  2. 上传高德地图-express框架

    1.首先要注册高德地图,完后成为开发者 2.控制台里获取自己的key值 3.在要显示地图的页面添加如下的代码 <script type="text/javascript" s ...

  3. vue 里面异步加载高德地图

    前言 关于Vue 里面使用异步加载高德地图 项目中其实只有几处需要用到地图,不需要全局引入 在index文件中引入js会明显拖慢首屏加载速度,虽然可以使用异步加载script的方式解决,但是始终觉得不 ...

  4. Android 高德地图使用小记

    感谢大佬:https://www.cnblogs.com/devilmaycry812839668/p/8727569.html 高德地图 Android编程中 如何设置使 标记 marker 能够被 ...

  5. Android编程 高德地图 中如何重写 定位按键 的触发事件 (com.amap.api.maps2d.LocationSource)点击定位后不仅定位在地图中心点上而且可以设置地图的缩放大小和提示

    在利用高德地图来编写自己的APP的时候,发现了一种对定位按键的重写方法,那就是利用   com.amap.api.maps2d.LocationSource  接口来重写. 什么是定位按键呢,下图中右 ...

  6. 高德地图Javascript API设置域名白名单

    在涉及到GPS地图相关应用的开发过程中,我们需要在高德开放平台注册相应的账号,并设置好相应应用来获取调用的Key值,该Key值直接放入到网站前端页面,针对任何人来说都可看到,因此我们防止他人盗用你的K ...

  7. 高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;

    在现在的APP中地图真的很常见,我们在去使用是一般都会选择一些三方的API,像百度.高德等等... 在集成的过程中,难免会遇到一些问题,大部分问题我们仔细的阅读开发文档都能解决的:但是!!!问题出现后 ...

  8. 使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上

    公司网点表存储的坐标是百度坐标,现需要将网点位置标注到高德地图上,研究了一下高德地图的云图数据模版 http://lbs.amap.com/yuntu/reference/cloudstorage和坐 ...

  9. IOS原生地图与高德地图

    原生地图 1.什么是LBS LBS: 基于位置的服务   Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位  ...

  10. 【原创】web端高德地图javascript API的调用

    关于第三放地图的使用,腾讯.百度.高德 具体怎么选择看你自己怎么选择了. 高德地图开放平台:http://lbs.amap.com/ 本次使用的是高德的javascript API http://lb ...

随机推荐

  1. scrapy中发送post请求

    1.可以使用`yield scrapy.FormRequest(url,formdata,callback)`方法发送POST请求. 其中构造参数formdata可以是字典,也可以是可迭代的(key, ...

  2. 在Mac的哪里可以找到bashrc文件

  3. (K8s学习笔记三)创建Namespace

    Namespace(命名空间)很多情况下用于实现多租户的资源隔离.Namespace通过将集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上分为不同项目.小组或用户 ...

  4. TP5--路由

    路由定义采用\think\Route类,通常是在应用的路由配置文件application/route.php进行注册 use think\Route; //路由规则 // Route::rule('/ ...

  5. mybatis-属性名和查询字段名不相同的解决方案

    1.使用别名 resultType可以将查询结果直接映射为实体bean对象的条件是,sql查询的字段名和实体bean的属性名一致,通过反射机制完成对象的创建. select tid id,tname ...

  6. Iframe 默认高度、宽度

    项目中还在使用 Iframe ,一次看代码时发现 Iframe 没有指定高度.宽度,可是在页面上显示的时候却有高度.宽度.想着应该是 Iframe 的默认值,于是写了一个简单的页面,代码如下: 1 & ...

  7. DataTable操作汇总

    1.排序 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age" ...

  8. java,抽象类,接口的方法,子类继承是不是必须全部实现

    普通类继承,并非一定要重写父类方法. 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法.如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法. 接口类继承.如果是一个子接口,可以扩展父 ...

  9. class声明中初始化静态成员变量的问题

    1. const静态变量,允许整型或枚举类型成员直接初始化. 2. constexpr静态变量,允许literal类型成员直接初始化. 3. c++17引入inline变量,允许其他类型成员直接初始化 ...

  10. Day 21 21.1:CrawlSpider(全站数据爬取)

    CrawlSpider(全站数据爬取) 实现网站的全站数据爬取 就是将网站中所有页码对应的页面数据进行爬取. crawlspider其实就是scrapy封装好的一个爬虫类,通过该类提供的相关的方法和属 ...