mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据
创始人
2025-01-10 03:07:22
0

效果:

mars3d实现GraphicLayer获取当前相机视角内的可视点位(矢量数据

相关依赖api:

1. map.getExtent();

提取地球当前视域边界,示例:{ xmin: 70, xmax: 140, ymin: 0, ymax: 55, height: 0, }

2.graphicLayer.eachGraphic遍历所有矢量数据并将其作为参数传递给回调函数判断是否在当前视域边界内

3.写个判断:

 /** * 获取地图边界内的矢量点位 * @param graphicLayer * @param isExtend */ const getGraphics = (graphicLayer: mars3d.layer.GraphicLayer | undefined, isExtend: Boolean = true) => { if (graphicLayer && (graphicLayer as any)._map) { const map = (graphicLayer as any)._map as mars3d.Map; const graphics: mars3d.graphic.BillboardEntity[] = []; const extend = map.getExtent(); if (isExtend) { graphicLayer.eachGraphic((graphic: mars3d.graphic.BillboardEntity) => { const { lng, lat } = graphic.point; if (lng >= extend.xmin && lng <= extend.xmax && lat >= extend.ymin && lat <= extend.ymax) { graphics.push(graphic); } }); return graphics; } else { return graphicLayer.getGraphics(); } } };

4.return返回在当前屏幕可视区域内的数据

补充:

1.如果是不规则多边形可以参考:

2.获取的视域转经纬度参考: 几种坐标的互转算法

//屏幕坐标 转换为 笛卡尔空间直角坐标 var cartesian3 = mars3d.PointUtil.getCurrentMousePosition(map.scene, windowPosition);  //笛卡尔空间直角坐标 转换为 屏幕坐标 var windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(map.scene, cartesian3);//v1.119之前版本 var windowPosition = Cesium.SceneTransforms.worldToWindowCoordinates(map.scene, cartesian3); //v1.119及之后版本  //笛卡尔空间直角坐标   转换为   地理坐标(弧度制) var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);  //笛卡尔空间直角坐标   转换为   地理坐标(经纬度) var point = mars3d.LngLatPoint.fromCartesian(cartesian3);  //地理坐标(弧度制)   转换为   笛卡尔空间直角坐标 var cartesian3 = Cesium.Cartesian3.fromRadians(lng, lat, height); //lng\lat为弧度制  //地理坐标(经纬度)  转换为  笛卡尔空间直角坐标 var cartesian3 = Cesium.Cartesian3.fromDegrees(longitude, latitude, height); 

或者使用 mars3d.LngLatPoint 作为中间类来做转换 

//笛卡尔空间直角坐标   转换为   地理坐标(经纬度)  var point = mars3d.LngLatPoint.fromCartesian(cartesian3);  //地理坐标(弧度制)   转换为    地理坐标(经纬度)  var point = mars3d.LngLatPoint.fromCartographic(cartographic);    //point 转换为  其他坐标   var cartesian3 = point.toCartesian();  //转换为  笛卡尔空间直角坐标  var cartographic = point.toCartographic();  //转换为  地理坐标(弧度制) 

 示例:

map.on(mars3d.EventType.click,  function (event) {     var point = mars3d.LngLatPoint.fromCartesian(event.cartesian); //转为经纬度     console.log("鼠标单击坐标", point); });

 

相关内容

热门资讯

此事备受玩家关注!新超圣辅助透... 此事备受玩家关注!新超圣辅助透视挂,建德麻将存在有挂,一贯有挂细节运新超圣辅助工具,进入游戏界面。进...
今天上午!熊猫麻将辅助透视挂,... 今天上午!熊猫麻将辅助透视挂,大唐撸麻雀确实有挂,确实有挂透视1、下载好大唐撸麻雀正确养号方法之后点...
突发!小吆三打哈辅助透视挂,悠... 突发!小吆三打哈辅助透视挂,悠闲麻将真的是有挂,原来有挂解密一、小吆三打哈游戏安装教程牌型概率发牌机...
今年以来!樱花梦雨辅助透视挂,... 今年以来!樱花梦雨辅助透视挂,新滕州麻将真的是有挂,好像有挂方法今年以来!樱花梦雨辅助透视挂,新滕州...
备受关注的!边锋老友棋牌辅助透... 备受关注的!边锋老友棋牌辅助透视挂,微友麻将是真的有挂,一直有挂攻略运边锋老友棋牌辅助工具,进入游戏...
明白辅助挂!萍乡滚筒辅助透视挂... 明白辅助挂!萍乡滚筒辅助透视挂,大唐麻将游戏是有挂,一直有挂教程1、操作简单,无需大唐麻将游戏手机版...
据报道!丫丫古诗辅助透视挂,琼... 据报道!丫丫古诗辅助透视挂,琼崖海南麻将真的有挂,其实有挂方法丫丫古诗脚本下载中分为三种模型:丫丫古...
随着!多多休闲辅助透视挂,东游... 随着!多多休闲辅助透视挂,东游麻将是真的有挂,竟然有挂存在随着!多多休闲辅助透视挂,东游麻将是真的有...
方法辅助挂!星禾游戏辅助透视挂... 方法辅助挂!星禾游戏辅助透视挂,太浪乾安麻将是真的有挂,果然发现有挂1、下载好星禾游戏脚本下载之后点...
近日!巅峰互娱辅助透视挂,趣咪... 近日!巅峰互娱辅助透视挂,趣咪麻将确实有挂,真是揭秘有挂;1、这是跨平台的巅峰互娱轻量版有透视,在线...