当前位置: 首页 > wzjs >正文

重庆网站优化公司微信营销软件排行榜

重庆网站优化公司,微信营销软件排行榜,动态和静态网站的区别,WordPress支持多少文章Turf.js是一个用于空间分析的js库,经常作用在地图上。目前项目上有一个需求,是使用的高德地图Loca的ZMarkerLayer图层,这个图层没用聚合功能,并且在地图上绘制的点位非常多。 Turf.js官方文档 https://turfjs.org/docs/api/clus…

Turf.js是一个用于空间分析的js库,经常作用在地图上。目前项目上有一个需求,是使用的高德地图Loca的ZMarkerLayer图层,这个图层没用聚合功能,并且在地图上绘制的点位非常多。

Turf.js官方文档

https://turfjs.org/docs/api/clustersDbscan

官方示例效果就是项目上的效果,只是这样的标牌点位非常多,标牌看起来视觉上非常拥挤。

目前思路是想写一个方法,传入点位,再传入一个半径,算出n多个聚合集合,只取每个聚合集合中的一个集合,成立成一个新数组,渲染再地图上,这样就可以实现一个简单的聚合效果。

方法:

先计获取当前像素距离,然后利用turf.js中的clustersDbscan这个函数拿到一个聚合集合对象,然后取出每个聚合项的一项即可。

可以看到使用clustersDbscan函数返回原数据,只是原来的数据中每个都多了两个字段,cluster和dbscan字段,core代表了聚合,cluster表示索引,表示第几个聚合集合,说明还有其他数据中也有cluster:0,dbscan:'core',然后我们只需要根据这两个字段再次遍历过滤即可。

根据cluster和dbscan手动拿到一个聚合后的集合对象。

function filterCollisionPoints(points, minDistance = 0.5) { // minDistance 默认500米let filteredPoints=turf.clustersDbscan(points, minDistance,{minPoints:2})console.log(filteredPoints,'filteredPoints')let clusterIndex = {}// 根据cluster和dbscan字段获得聚合集合对象filteredPoints.features.forEach((item)=>{if(item.properties.cluster!==undefined){if(clusterIndex[item.properties.cluster]){clusterIndex[item.properties.cluster].push(item)}else{clusterIndex[item.properties.cluster]=[item]}}else{if(clusterIndex['noise']){clusterIndex['noise'].push(item)}else{clusterIndex['noise']=[item]}}})// console.log(clusterIndex,'clusterIndex')// 手动过滤,拿到过滤后的聚合数据。let newClusterData=[]for(const key in clusterIndex){if(key==='noise'){clusterIndex[key].forEach((item,index)=>{newClusterData.push(item)})}else {newClusterData.push(clusterIndex[key][0])//我这里取得是第一项,也可以随机取其中一个}}console.log(newClusterData,'newClusterData')return newClusterData;
}

 调用如下,我用的是高德地图,getResolution获取当前地图分辨率,大概算出合适的半径,传入即可,然后就是监听地图的moveend事件,不断传入新的newData就可以算出当前聚合的数据,然后再地图上再渲染聚合的数据就好了。

let radius = map.getResolution()/10*1.5
const filterData= filterCollisionPoints({type: 'FeatureCollection',features: newData
},radius)

由于项目上地图上的点位数据比较敏感,暂时不做效果展示,按照上面的方法,可以实现一个简单的聚合效果。

http://www.dtcms.com/wzjs/5709.html

相关文章:

  • 石家庄建设工程招标办网站百度在线入口
  • 做测算的网站竞价托管 微竞价
  • 网站商务通客服端怎样做搜索引擎推广
  • 网站模板免费下载网站东莞网络营销渠道
  • 工信部网站备案电话十大搜索引擎神器
  • 工作室网站源码php上海网站推广公司
  • 金融类网站设计推广目标怎么写
  • 机械东莞网站建设0769百度竞价关键词价格查询工具
  • 淮阳住房和城乡建设局网站软件推广接单平台
  • 小红书的网络营销方法网站排名优化方案
  • 维护网站需要多少钱软文推广渠道
  • 免费创建网站教程佛山网站优化
  • 做电影网站用什么服务器比较好郑州百度推广哪家好
  • 怎样用百度做网站优化广告推广语
  • ppt软件手机版免费下载seo怎么做优化排名
  • 响水网站制作公司电商线上推广渠道
  • 沈阳做网站哪个好公司品牌宣传
  • 网站建设与规划前景seo建站平台哪家好
  • 大连做外贸建站的专业公司百度咨询电话 人工客服
  • 哪些客户需要做网站品牌推广策略包括哪些内容
  • 微信端网站开发流程百度产品
  • 网站的收费系统怎么做百度网盘网站入口
  • 网上做游戏任务赚钱的网站友情链接英文翻译
  • 营销型网站建站推广网络推广加盟
  • 装修网络接单平台seo搜索优化是什么呢
  • 网站建设项目百度热度榜搜索趋势
  • 能自己做网站接业务吗站长之家爱站网
  • 网站建设工程师的职位要求百度指数批量查询工具
  • 做明星网站可以做那些子网页百度sem优化师
  • 邯郸网站建设最新报价百度秒收录软件