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

专业移动微网站建设短视频seo优化

专业移动微网站建设,短视频seo优化,聊城做网站费用信息,北京做兼职从哪个网站好实现效果如下 实现步骤 后端接口获取全部点位数据EntityCluster 是DataSource的一个属性,DataSource 中在通过加载entities 自动展示聚合数据,DataSouce 可以之前加载行政边界时候用过,可以通过load 加载数据,DataSource 是一个接…

实现效果如下

在这里插入图片描述

实现步骤

  1. 后端接口获取全部点位数据
  2. EntityCluster 是DataSource的一个属性,DataSource 中在通过加载entities 自动展示聚合数据,DataSouce 可以之前加载行政边界时候用过,可以通过load 加载数据,DataSource 是一个接口,有很多实现类,但是我们这边是从后端接口获取的,不是geoJson 数据,可以使用CustomDataSource 自定义数据源,然后赋值entities
  3. 修改聚合样式,Cesium 可以通过pinBuilder 实现点位以及聚合后的数字,修改里面的文字即可,也可以通过设置自定义图片实现。
  4. 自定义样式,按照聚合数量的多少选择不同的图片,同时设置图片的大小
  5. 很多人也可能是为了找这个图标,我提供一个方法,阿里云图标库 ,直接搜索聚合找自己想要的样式就可以

具体代码实现 MapCollection.ts

// 百瑞通泄露预警平台地图业务相关
import * as Cesium from 'cesium'
import { EgasService } from '@/api/installService'
import { MapEntityType } from '@/views/egas/gis/MapEvent'
import { CustomDiffuseCircleMaterialProperty } from '@/views/egas/gis/material/CustomDiffuseCircleMaterialProperty'export const addBaithonEquipmentPoints = async (viewer: Cesium.Viewer) => {// 1.清空地图上所有点位await clearAllPoints(viewer)// 2.获取站点数据const result: any = await EgasService.baithonEquipmentPointDataList()// 3.通过DataSource 设置点位聚合const dataSource = new Cesium.CustomDataSource('myData')result.data.forEach((item: any) => {if (item.isAlarms) {dataSource.entities.add({name: MapEntityType.BAITHON_POINT,// 通过properties 携带参数properties: new Cesium.PropertyBag(item),position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, 0),billboard: {// 图片路径image: `/imgs/map_icon/location_warning.png`,// 像素偏移pixelOffset: new Cesium.Cartesian2(0, -10)},ellipse: {semiMajorAxis: 150,semiMinorAxis: 150,material: new CustomDiffuseCircleMaterialProperty({color: new Cesium.Color(1.0, 0.0, 0.0, 1.0),speed: 2.0,circleCount: 2,gradient: 0.2})}})} else {dataSource.entities.add({name: MapEntityType.BAITHON_POINT,properties: new Cesium.PropertyBag(item),position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, 0),billboard: {image: `/imgs/map_icon/location_normal.png`,// 像素偏移pixelOffset: new Cesium.Cartesian2(0, -10)}})}})// 4.设置聚合属性dataSource.clustering.enabled = truedataSource.clustering.pixelRange = 15dataSource.clustering.minimumClusterSize = 3// 设置聚合属性监听dataSource.clustering.clusterEvent.addEventListener(async (clusteredEntities, cluster) => {cluster.label.show = falsecluster.label.font = '14px Helvetica'cluster.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUNDcluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM// 按照聚合数量进行图片设置if (clusteredEntities.length >= 20) {combineIconAndLabel('./imgs/map_icon/cluster/cluster_04.png',clusteredEntities.length,64).then((item) => {cluster.billboard.image = item.toDataURL()cluster.billboard.width = 72cluster.billboard.height = 72})} else if (clusteredEntities.length >= 12) {combineIconAndLabel('./imgs/map_icon/cluster/cluster_03.png',clusteredEntities.length,64).then((item) => {cluster.billboard.image = item.toDataURL()cluster.billboard.width = 56cluster.billboard.height = 56})} else if (clusteredEntities.length >= 8) {combineIconAndLabel('./imgs/map_icon/cluster/cluster_02.png',clusteredEntities.length,64).then((item) => {cluster.billboard.image = item.toDataURL()cluster.billboard.width = 48cluster.billboard.height = 48})} else {combineIconAndLabel('./imgs/map_icon/cluster/cluster_01.png',clusteredEntities.length,64).then((item) => {cluster.billboard.image = item.toDataURL()cluster.billboard.width = 40cluster.billboard.height = 40})}// cluster.billboard.image = pinImgcluster.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOMcluster.billboard.heightReference = Cesium.HeightReference.CLAMP_TO_GROUNDcluster.billboard.show = true})// 5.dataSource 添加到图层中await viewer.dataSources.add(dataSource)await viewer.flyTo(dataSource)
}export const clearAllPoints = (viewer: Cesium.Viewer) => {const entitiesToRemove: Cesium.Entity[] = []viewer.entities.values.forEach((entity) => {if (entity.name === MapEntityType.BAITHON_POINT) {entitiesToRemove.push(entity)}})entitiesToRemove.forEach((entity) => {viewer.entities.remove(entity)})
}
/*** @description: 将图片和文字合成新图标使用(参考Cesium源码)* @param {*} url:图片地址* @param {*} label:文字* @param {*} size:画布大小* @return {*} 返回canvas*/
const combineIconAndLabel = (url, label, size) => {// 创建画布对象const canvas = document.createElement('canvas')canvas.width = sizecanvas.height = sizeconst ctx = canvas.getContext('2d')return Cesium.Resource.fetchImage(url).then((image) => {// 异常判断try {ctx.drawImage(image, 0, 0)} catch (e) {console.log(e)}// 渲染字体// font属性设置顺序:font-style, font-variant, font-weight, font-size, line-height, font-familyctx.fillStyle = Cesium.Color.WHITE.toCssColorString()ctx.font = 'bold 20px Microsoft YaHei'ctx.textAlign = 'center'ctx.textBaseline = 'middle'ctx.fillText(label, size / 2, size / 2 + 4)return canvas})
}
export const clearWarning = async (viewer: Cesium.Viewer) => {await addBaithonEquipmentPoints(viewer)
}
http://www.dtcms.com/wzjs/26192.html

相关文章:

  • 工信部 网站要独立ip网站优化排名软件网站
  • 内衣批发网站建设网站安全检测
  • 哪里有南宁网站建设免费做网站网站的软件
  • 阿里云网站申请用途新闻发布最新新闻
  • 河南映天建设网站小白如何学电商运营
  • 北京家居网站建设百度seo排名培训
  • 未明潮网站建设保密协议太原seo排名
  • 做网站成都哪家公司最好重庆网站排名推广
  • 红色政府 网站模板千峰培训可靠吗?
  • 中秋网页设计素材网站下载百度免费
  • 做网站运营这工作怎么样东莞seo整站优化
  • 自己如何做外贸公司网站电商运营一天都干啥
  • 英文网站如何推广友链交易平台
  • 企业建站公司服务seo网站优化服务
  • 环艺做网站网络推广项目外包公司
  • 网站建设实例下载北京百度科技有限公司电话
  • 提供做网站企业百度app交易平台
  • 邢台网站制作费用济南seo关键词优化方案
  • 公司网站开发制作简单网页制作模板
  • 合肥软件开发seo优化网络推广
  • 2015做导航网站360收录批量查询
  • 庆阳网站设计价格竞价sem托管
  • 做的好的宠物食品网站杭州产品推广服务公司
  • 网页微信版传输助手seo白帽优化
  • 鸿兴网站建设公司上海网络推广服务公司
  • 做外国订单有什么网站别做网络推广员
  • 电子商务毕设做网站沧州seo公司
  • 找网站开发公司seo咨询服务价格
  • 做设计网站的工作内容合肥seo快排扣费
  • 微信公众平台官网登录入口网页版seo项目是什么