ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

高德地图使用websocket后重新设置点进行优化

2022-05-23 11:03:11  阅读:228  来源: 互联网

标签:markArrNew2 websocket 地图 current json params markArrNew 高德 gps


// 设置第一次点赋值,重新定义一个新数组,将设备号为对象名,索引值作为键值  
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;

 

标签:markArrNew2,websocket,地图,current,json,params,markArrNew,高德,gps
来源: https://www.cnblogs.com/zm-0101/p/16300385.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有