ThingJS:3D地图轻量制作方法普及

简介: ThingJS支持3D地图轻量制作,城市是每个人的家,现在就教你如何制作3D地图!

作为户外广告界的“兵家必争之地”,时报广场出现过许多有趣的广告牌。一些大屏幕,已经和我们的生活产生了奇妙的联系。ThingJS支持3D地图轻量制作,城市是每个人的家,现在就教你如何制作3D地图!

智慧城市指的是运用信息和通信技术手段,实现精细化和动态管理,并提升城市管理成效和改善市民生活质量。城市大屏应用通过可视化的形式营造感知氛围,把数据背后的故事生动描绘,调动受众的情绪与感知,传达本地文化背后的商业价值。

ThingJS支持通过编辑界面可视化的点击方式来快速使用搭建地图工具,在智慧城市管理平台建设过程中,基于可视化实现集中指挥调度、预案及辅助决策以及服务,使得数据共享交换更加便捷。更多详情参阅Citybuilder技术文档 >

登录您的ThingJS平台账号,进入在线编辑界面,在操作可视化服务下点击进入Citybuidler。

第 1 步:创建地图项目
点击+号,创建地图项目,可选择一键生成或者自己上传Geojason数据。
01 (2).GIF

第 2 步:选择底图
进入Citybuilder界面(自己上传数据),从【底图】列表中选取最贴近使用场景的【背景底图】模板,默认为Google影像。
02 (2).GIF

第 3 步:添加图层
上传准备好的Geojason数据,底图上新增一个地理图层。可继续利用【底图】组件来增强效果。
03.GIF

第 4 步:放置场景
进入【场景】,可从数据库中直接选择园区或建筑,选择地点,嵌入场景。之后进行【项目定位】,包括视角调整和交互参数配置。
040.GIF
041.GIF

第 5 步:预览发布
点击画布右下角全屏预览,预览完毕后点击发布,即可生成 URL,并可设置访问密码
05.GIF

如上图所示,生成的地图场景可转入ThingJS平台进行二次开发,纯js代码引用地图组件脚本,获取CityBuilder转出的url,定义类型为map,随后从map中获取项目的瓦片图层、业务图层,后续可进行绑定回调控制,并根据名称查询图层对象,编辑修改尺寸或大小参数。

官方示例如下:

var app = new THING.App();
app.background = [0, 0, 0];

// 引用地图组件脚本
THING.Utils.dynamicLoad(['https://www.thingjs.com/uearth/uearth.min.js'], function () {
    app.create({
        type: 'Map',
        // CityBuilder转出的url
        url: 'https://www.thingjs.com/citybuilder_console/mapProject/config/TVRFNE9UZz1DaXR5QnVpbGRlckAyMDE5',
        complete: function (event) {
            // 在这里编写业务代码
            var map = event.object;
            // 获取项目中的瓦片图层
            var baseLayers = map.baseLayers;
            // 获取项目中的业务图层
            var userLayers = map.userLayers;
            var buildingLayer = app.query('building')[0];
            buildingLayer.on(THING.EventType.DBLClick, function (e) {
                let obj = e.object;
                app.camera.earthFlyTo({
                    object: obj
                });
            });

            var toolbarWidth = 250;
            var toolbar = new THING.widget.Panel({
                hasTitle: true, // 是否有标题
                titleText: '图层列表',
                width: toolbarWidth
            });
            let clientWidth = app.domElement.clientWidth;
            toolbar.position = [clientWidth - toolbarWidth - 10, 10];
            userLayers.forEach(function (layer) {
                var button = toolbar.addBoolean({ open: true }, 'open').caption(layer.name);// 绑定回调
                button.on('change', function (ev) {
                    layer.visible = ev;
                });
            });

            // 先根据名称查询图层对象 名称是在CityBuilder中配置的图层的名称
            var primaryRoadLayer = app.query('primary')[0];
            var originWidth = primaryRoadLayer.renderer.width;
            new THING.widget.Button('修改线宽度', function () {
                if (primaryRoadLayer.renderer.width === originWidth) {
                    primaryRoadLayer.renderer.width = 8;
                }
                else {
                    primaryRoadLayer.renderer.width = originWidth;
                }
            });
            // 根据名称查询图层对象
            var bankLayer = app.query('bank')[0];
            var originSize = bankLayer.renderer.size;
            new THING.widget.Button('修改点尺寸', function () {
                if (bankLayer.renderer.size === originSize) {
                    // 修改整个图层对象的尺寸
                    bankLayer.renderer.size = 30;
                }
                else {
                    bankLayer.renderer.size = originSize;
                }
            });
            // 根据名称查询图层对象
            var buildingLayer = app.query('building')[0];
            var originHeight = buildingLayer.objects[0].height;
            new THING.widget.Button('修改建筑高度', function () {
                // 修改第一个对象的高度
                if (buildingLayer.objects[0].height === originHeight) {
                    buildingLayer.objects[0].height = 500;
                }
                else {
                    buildingLayer.objects[0].height = originHeight;
                }
            });
        }
    });
});

ThingJS,让开发者早点交付项目早点下班回家!

相关文章
|
2月前
|
前端开发 安全 Android开发
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
Tauri 2.0 正式版于 2024 年 10 月 2 日发布,带来了多项重大更新。此次更新不仅全面支持 iOS 和 Android,实现“一次编写,到处运行”,还升级了插件系统,增强了灵活性与可扩展性。安全性大幅提升,引入新的权限系统,并优化了 IPC 层,支持原始有效载荷传输,大幅提高性能。此外,Tauri 2.0 还支持热模块替换(HMR),简化了应用分发流程,成为跨平台开发的重要里程碑。
551 0
跨平台开发的新纪元:Tauri 2.0 横空出世,移动端、桌面端一网打尽!
|
4月前
|
搜索推荐 Java Android开发
打造个性化安卓应用:从设计到部署的全攻略
【8月更文挑战第31天】在这篇文章中,我们将一起探索如何从零开始构建一个安卓应用,并为其添加个人特色。我们将通过实际的代码示例,学习如何使用Android Studio进行开发,以及如何将应用发布到Google Play商店。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧,帮助你打造独一无二的安卓应用。
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
162 0
|
4月前
|
监控 数据库 开发者
云端飞跃:Play Framework应用的惊心动魄部署之旅,从本地到云的华丽转身
【8月更文挑战第31天】Play Framework是一款高效Java和Scala Web应用框架,支持快速开发与灵活部署。本文详细介绍从本地环境到云平台(如Heroku和AWS Elastic Beanstalk)的部署策略,涵盖配置文件设置、依赖管理和环境变量配置等关键步骤,并提供示例代码,帮助开发者顺利完成部署。此外,还介绍了如何进行日志和性能监控,确保应用稳定运行。通过本文,开发者可充分利用云计算的优势,实现高效部署与维护。
49 0
|
6月前
|
前端开发 定位技术 PHP
技术好文共享:网页游戏开发教程
技术好文共享:网页游戏开发教程
|
6月前
|
传感器 存储 数据采集
技术好文共享:焕新!CANape19真香!
技术好文共享:焕新!CANape19真香!
|
机器学习/深度学习 人工智能
体育赛事转播平台开发搭建,技术扩展瞄准AI解说功能
"随着体育赛事的蓬勃发展,每年都有大量的体育比赛视频呈现给球迷,其中不可能所有视频都能得到人工解说。这正是AI语音解说的大展拳脚之地。
游戏直播软件源码开发搭建,平台获利方法有哪些?
在互联网新时代,随着直播技术成熟,泛娱乐产业备受市场追捧,当中娱乐游戏直播平台在这一行业中处于核心关注热点。即使由于短视频的兴起,其增长速度显著下降,但是其吸金实力始终不可小嘘。
|
测试技术 数据库 UED
搭建开发类似虎牙斗鱼类型的娱乐游戏直播平台的四个步骤
下面我们就给大家介绍快速的搭建开发类似(虎牙、斗鱼)类型的娱乐游戏直播平台的四个步骤,通过搭建自己的娱乐游戏直播平台,不仅可以为用户提供有吸引力的娱乐内容,还能够产生丰厚的经济收益。
现有的游戏娱乐直播平台源代码开发平台,二开功能省钱又省时
随着游戏娱乐行业的蓬勃发展,开发一套高效的游戏娱乐直播平台成为了许多企业和个人的目标。在这篇文章中,我们将探讨一种新的开发策略,即通过源码二次开发来省钱和省时。