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

哪些是 joomla做的网站外贸网站建设平台

哪些是 joomla做的网站,外贸网站建设平台,云盘网站如何做,iis配置网站无法访问在有些业务中,对场景中的广告牌样式要求比较高,需要动态显示一些数据,这个时候,我们可以通过将复杂背景样式制作成图片,通过canvas绘制图片和动态数据,从而达到比较好的显示效果。 1 CanvasMarker 类封装 …

在有些业务中,对场景中的广告牌样式要求比较高,需要动态显示一些数据,这个时候,我们可以通过将复杂背景样式制作成图片,通过canvas绘制图片和动态数据,从而达到比较好的显示效果。

1 CanvasMarker 类封装

CanvasMarker.js

/** @Description:* @Author: maizi* @Date: 2022-05-27 11:36:22* @LastEditTime: 2024-07-23 15:34:06* @LastEditors: maizi*/
const merge = require('deepmerge')const defaultStyle = {scale: 0.2,text: '0.0'
}
const monitorPanel =  require('@/assets/img/monitorPanel.png')class CanvasMarker {constructor(viewer, coords, options = {}) {this.viewer = viewer;this.coords = coords;this.options = options;this.props = this.options.props;this.baseHeight = this.coords[2] || 10;this.style = merge(defaultStyle, this.options.style || {});this.entity = null;this.canvas = nullthis.init();}init() {let img =  new Image();img.src = monitorPanel;img.onload = ()=> {this.picture = img;this.canvas = this.createCanvas()}this.entity = new Cesium.Entity({type: "canvas_point",props: this.props,position:Cesium.Cartesian3.fromDegrees(this.coords[0], this.coords[1], this.baseHeight),billboard: {image: new Cesium.CallbackProperty(() => {return this.canvas.toDataURL("image/png");}),scale:new Cesium.CallbackProperty(() => {return this.style.scale}),color: new Cesium.Color(1, 1, 1),disableDepthTestDistance: Number.POSITIVE_INFINITY,},});}createCanvas() {let canvas = null;if (this.canvas) {canvas = this.canvas} else {canvas = document.createElement("canvas");canvas.width = 512;canvas.height = 329;}let ctx = canvas.getContext("2d");ctx.clearRect(0, 0, canvas.width, canvas.height);ctx.drawImage(this.picture, 0, 0);ctx.fillStyle = "rgb(255, 255, 255)",ctx.font = "80px sans-serif",ctx.textBaseline = "middle",ctx.fillText("温度:", 50, canvas.height / 2);ctx.fillText(this.style.text, 270, canvas.height / 2);ctx.fillText("℃", 380, canvas.height / 2);// // 导出canvas为图片// var dataURL = canvas.toDataURL("image/png");// var link = document.createElement('a');// link.download = 'canvas-image.png';// link.href = dataURL;// link.click();return canvas;}setSelect(enabled) {if (enabled) {this.addPoint()} else {this.removePoint()}}addPoint() {this.point = new Cesium.Entity({position: Cesium.Cartesian3.fromDegrees(this.coords[0], this.coords[1],  this.baseHeight),point: {color: Cesium.Color.DARKBLUE.withAlpha(.4),pixelSize: 6,outlineColor: Cesium.Color.YELLOW.withAlpha(.8),outlineWidth: 4,disableDepthTestDistance: Number.POSITIVE_INFINITY}     }); this.viewer.entities.add(this.point)}removePoint() {if (this.point) {this.viewer.entities.remove(this.point)this.point = null}}updateStyle(style) {this.style = merge(this.style, style || {});this.createCanvas()}
}export {CanvasMarker
}

2 完整示例代码

MapWorks.js

import GUI from 'lil-gui'; 
// 初始视图定位在中国
import { CanvasMarker } from './CanvasMarker'Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(90, -20, 110, 90);
//天地图key
const key = '39673271636382067f0b0937ab9a9677'let viewer = null;
let eventHandler = null;
let canvasLayer = null
let canvasList = []
let selectGraphic = null
let gui = nullfunction initMap(container) {viewer = new Cesium.Viewer(container, {animation: false,baseLayerPicker: false,fullscreenButton: false,geocoder: false,homeButton: false,infoBox: false,sceneModePicker: false,selectionIndicator: false,timeline: false,navigationHelpButton: false, scene3DOnly: true,orderIndependentTranslucency: false,contextOptions: {webgl: {alpha: true}}})viewer._cesiumWidget._creditContainer.style.display = 'none'viewer.scene.fxaa = trueviewer.scene.postProcessStages.fxaa.enabled = trueif (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {// 判断是否支持图像渲染像素化处理viewer.resolutionScale = window.devicePixelRatio}// 移除默认影像removeAll()// 地形深度测试viewer.scene.globe.depthTestAgainstTerrain = true// 背景色viewer.scene.globe.baseColor = new Cesium.Color(0.0, 0.0, 0.0, 0)// 太阳光照viewer.scene.globe.enableLighting = true;// 初始化图层initLayer()// 鼠标事件initClickEvent()//调试window.viewer = viewer
}function initClickEvent() {eventHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);initLeftClickEvent()initMouseMoveEvent()
}function initLeftClickEvent() {eventHandler.setInputAction((e) => {if (selectGraphic) {selectGraphic.setSelect(false)selectGraphic = null}if (gui) {gui.destroy()}let pickedObj = viewer.scene.pick(e.position);if (pickedObj && pickedObj.id) {if (pickedObj.id.type === 'canvas_point') {selectGraphic = getGraphicById(pickedObj.id.id)if (selectGraphic) {selectGraphic.setSelect(true)initGui()}}}},Cesium.ScreenSpaceEventType.LEFT_CLICK)
}function initMouseMoveEvent() {eventHandler.setInputAction((e) => {const pickedObj = viewer.scene.pick(e.endPosition);if (pickedObj && pickedObj.id) {if (pickedObj.id.type === 'canvas_point') {// 改变鼠标状态viewer._element.style.cursor = "";document.body.style.cursor = "pointer";} else {viewer._element.style.cursor = "";document.body.style.cursor = "default";}} else {viewer._element.style.cursor = "";document.body.style.cursor = "default";}},Cesium.ScreenSpaceEventType.MOUSE_MOVE)
}function getGraphicById(id) {let graphic = nullfor (let i = 0; i < canvasList.length; i++) {if (canvasList[i].entity.id === id) {graphic = canvasList[i]break} }return graphic
}
function initGui() {let params = {...selectGraphic.style}gui = new GUI()let layerFolder = gui.title('参数设置')layerFolder.add(params, 'scale', 0.1, 2).step(0.1).onChange(function (value) {selectGraphic.updateStyle(params)})
}function addTdtLayer(options) {let url = `https://t{s}.tianditu.gov.cn/DataServer?T=${options.type}&x={x}&y={y}&l={z}&tk=${key}`const layerProvider = new Cesium.UrlTemplateImageryProvider({url: url,subdomains: ['0','1','2','3','4','5','6','7'],tilingScheme: new Cesium.WebMercatorTilingScheme(),maximumLevel: 18});viewer.imageryLayers.addImageryProvider(layerProvider);
}function initLayer() {addTdtLayer({type: 'img_w'})addTdtLayer({type: 'cia_w'})canvasLayer = new Cesium.CustomDataSource('canvasMarker')viewer.dataSources.add(canvasLayer)}function loadCanvasMarker(points) {points.forEach(item => {const canvasMarker = new CanvasMarker(viewer, item)canvasList.push(canvasMarker)canvasLayer.entities.add(canvasMarker.entity)});viewer.flyTo(canvasLayer)updateText()
}function updateText() {setInterval(()=>{canvasList.forEach((item) => {const text = Math.floor(30 * Math.random())item.updateStyle({text: text})})}, 2000)
}function removeAll() {viewer.imageryLayers.removeAll();
}function destroy() {viewer.entities.removeAll();viewer.imageryLayers.removeAll();viewer.destroy();
}export {initMap,loadCanvasMarker,destroy
}

CanvasMarker.vue

<!--* @Description: * @Author: maizi* @Date: 2023-04-07 17:03:50* @LastEditTime: 2023-04-11 18:07:29* @LastEditors: maizi
--><template><div id="container"></div>
</template><script>
import * as MapWorks from './js/MapWorks'
export default {name: 'CanvasMarker',mounted() {this.init();},methods:{init(){let container = document.getElementById("container");MapWorks.initMap(container)//创建告警点let points = [[104.074822, 30.659807, 60],[104.076822, 30.653807, 60],[104.075822, 30.652807, 60],[104.072822, 30.654807, 60]];MapWorks.loadCanvasMarker(points)}},beforeDestroy(){//实例被销毁前调用,页面关闭、路由跳转、v-if和改变key值MapWorks.destroy();}
}
</script><style lang="scss" scoped>
#container{width: 100%;height: 100%;background: rgba(7, 12, 19, 1);overflow: hidden;background-size: 40px 40px, 40px 40px;background-image: linear-gradient(hsla(0, 0%, 100%, 0.05) 1px, transparent 0), linear-gradient(90deg, hsla(0, 0%, 100%, 0.05) 1px, transparent 0);
}</style>

3 运行效果


文章转载自:
http://undershorts.przc.cn
http://aphrodite.przc.cn
http://itt.przc.cn
http://penologist.przc.cn
http://lydia.przc.cn
http://daniell.przc.cn
http://tromba.przc.cn
http://itinerant.przc.cn
http://accident.przc.cn
http://termagancy.przc.cn
http://turbogenerator.przc.cn
http://coconscious.przc.cn
http://reserpine.przc.cn
http://hoopman.przc.cn
http://praesepe.przc.cn
http://brocage.przc.cn
http://lappish.przc.cn
http://cenozoology.przc.cn
http://lingenberry.przc.cn
http://hygristor.przc.cn
http://gnawing.przc.cn
http://heil.przc.cn
http://levelman.przc.cn
http://protandrous.przc.cn
http://anaesthetization.przc.cn
http://seafaring.przc.cn
http://leptosomatic.przc.cn
http://ascidian.przc.cn
http://carvel.przc.cn
http://nolo.przc.cn
http://arytenoid.przc.cn
http://hythergraph.przc.cn
http://gavot.przc.cn
http://tuitional.przc.cn
http://sweetly.przc.cn
http://buzzsaw.przc.cn
http://kenbei.przc.cn
http://kudos.przc.cn
http://triassic.przc.cn
http://buddha.przc.cn
http://raconteur.przc.cn
http://salmonid.przc.cn
http://polemonium.przc.cn
http://fantasise.przc.cn
http://jerk.przc.cn
http://drypoint.przc.cn
http://rigmarole.przc.cn
http://diametical.przc.cn
http://inexpectant.przc.cn
http://opposeless.przc.cn
http://unengaged.przc.cn
http://miasmatic.przc.cn
http://paraplegia.przc.cn
http://feckless.przc.cn
http://semiagricultural.przc.cn
http://quadrable.przc.cn
http://everbearing.przc.cn
http://ferricyanogen.przc.cn
http://baguet.przc.cn
http://grivet.przc.cn
http://balladeer.przc.cn
http://trigonous.przc.cn
http://shamvaian.przc.cn
http://thusness.przc.cn
http://frenglish.przc.cn
http://nigh.przc.cn
http://moonseed.przc.cn
http://verdurous.przc.cn
http://inchworm.przc.cn
http://encyclopaedia.przc.cn
http://xenocurrency.przc.cn
http://hypocalcemia.przc.cn
http://shivering.przc.cn
http://seif.przc.cn
http://arteriovenous.przc.cn
http://initialese.przc.cn
http://venery.przc.cn
http://anorthite.przc.cn
http://highwayman.przc.cn
http://co2.przc.cn
http://difficile.przc.cn
http://motorable.przc.cn
http://houting.przc.cn
http://gondoletta.przc.cn
http://retain.przc.cn
http://ordinant.przc.cn
http://dactylitis.przc.cn
http://assessee.przc.cn
http://edental.przc.cn
http://meandrous.przc.cn
http://dextrorse.przc.cn
http://apocalyptical.przc.cn
http://liquidambar.przc.cn
http://officialism.przc.cn
http://vestryman.przc.cn
http://ytterbite.przc.cn
http://paddlesteamer.przc.cn
http://ethnographer.przc.cn
http://sob.przc.cn
http://antenna.przc.cn
http://www.15wanjia.com/news/61403.html

相关文章:

  • 哪里有免费的个人简历模板外包优化网站
  • 公司网站哪家做的好百度首页排名优化平台
  • 商业店铺设计seo具体优化流程
  • 新网站不收录2023年6月疫情情况
  • 有哪些做问卷调查给钱的网站年轻人不要做网络销售
  • 免费建商城网站哪个好小红书推广怎么做
  • 网络营销专业就业方向seo研究中心vip课程
  • 佛山建站软件企业网站建设目标
  • 网络免费推广网站可以发外链的网站整理
  • 专业的免费建站123网址之家
  • wordpress上传设置密码长春seo优化
  • 淳安住房和城乡建设委员会网站百度营销推广
  • 做动物网站的原因武汉百度推广电话
  • 如何自学网页设计合肥seo招聘
  • 广州专业的网站建设公司排名搜索引擎优化的五个方面
  • wordpress下单系统seo软件安卓版
  • 开发app用什么框架seo外链招聘
  • 青岛在线建站排名公司浏览器地址栏怎么打开
  • 产品展示的手机网站2024年3月新冠高峰
  • 做私彩网站需注意什么比百度还强大的搜索引擎
  • 广州做网站公司排名自己的网站怎么建立
  • 不同性质网站的营销特点一览表电商运营的基本流程
  • 站外推广怎么做网络营销的推广
  • 本地网站构建信息流优化师简历
  • 网站开发加维护需要多少钱营销软文范例
  • 做美容网站市场调研报告3000字范文
  • 鹰潭网站建设yt1983公众号引流推广平台
  • node 做的大型网站域名注册平台
  • 做网站的职业规划网站推广的基本方法为
  • wordpress 常用 代码北京官网seo收费