分享
查看: 1212|回复: 0

[分享] 如何通过CityBuilder转出的url开发3D地图脚本?

[复制链接]

如何通过CityBuilder转出的url开发3D地图脚本?

发表于 2021-1-13 16:09:26 来自 分享 阅读模式 倒序浏览
zzv_icon1212 zzr_icon0 查看全部


#前端开发##3D可视化##物联网#
  1. 明确虚拟场景的位置
  2. Citybuilder导出二次开发
  3. 基础参数配置与修改

如何通过CityBuilder转出的url开发3D地图脚本?

CityBuilder(城市级场景搭建工具)使用起来足够简单,非常符合设计人员的使用习惯,那么,辛辛苦苦做好的城市级场景,如何交付给开发,在后续的环节中灵活使用?
ThingJS平台早就考虑到了这个问题,统一了平台数据,支持CityBuilder转出url;平台加载地图组件之后,即可轻松二次开发。下面我们就来解析使用步骤,有任何问题请留言。

明确虚拟场景的位置

三维地球立足于世界坐标系,城市级或园区级场景会选中实际地点进行加载,这里需要开发人员修改app.background的三点坐标,提供精准的地图定位。
  1. var app = new THING.App();
  2. app.background = [0, 0, 0];
复制代码

Citybuilder导出二次开发

动态加载地图组件脚本之后,可以通过Citybuilder转出的url创建地图后进行二次开发,包括添加业务图层、后台修改对象参数,示例的说明简单易懂,让开发人员更加清楚了解功能的价值。更多demo查看进入官网注册哟

如何通过CityBuilder转出的url开发3D地图脚本?

注意结合CityBuilder地图工具来使用更方便,设计人员可以利用可视化组件进行图层样式设置,支持导入3D建筑场景,之后生成项目url导入ThingJS( 物联网3D可视化开发平台 - 数字孪生可视化平台),如下图所示。

如何通过CityBuilder转出的url开发3D地图脚本?

  1. // 引用地图组件脚本
  2. THING.Utils.dynamicLoad(['https://www.thingjs.com/uearth/uearth.min.js'], function () {
  3. app.create({
  4. type: 'Map',
  5. // CityBuilder转出的url
  6. url: 'https://www.thingjs.com/citybuilder_console/mapProject/config/TVRFNE9UZz1DaXR5QnVpbGRlckAyMDE5',
  7. complete: function (event) {
  8. // 在这里编写业务代码
  9. var map = event.object;
  10. // 获取项目中的瓦片图层
  11. var baseLayers = map.baseLayers;
  12. // 获取项目中的业务图层
  13. var userLayers = map.userLayers;
  14. var buildingLayer = app.query('building')[0];
  15. buildingLayer.on(THING.EventType.DBLClick, function (e) {
  16. let obj = e.object;
  17. app.camera.earthFlyTo({
  18. object: obj
  19. });
  20. });
  21. var toolbarWidth = 250;
  22. var toolbar = new THING.widget.Panel({
  23. hasTitle: true, // 是否有标题
  24. titleText: '图层列表',
  25. width: toolbarWidth
  26. });
  27. let clientWidth = app.domElement.clientWidth;
  28. toolbar.position = [clientWidth - toolbarWidth - 10, 10];
  29. userLayers.forEach(function (layer) {
  30. var button = toolbar.addBoolean({ open: true }, 'open').caption(layer.name);// 绑定回调
  31. button.on('change', function (ev) {
  32. layer.visible = ev;
  33. });
  34. });
复制代码

基础参数配置与修改

3D场景内的图层对象一般在citybuilder提前配置,基础参数包括名称、长宽高、颜色等参数,导入thingjs平台后,直接使用前端代码进行修改,常见用于线宽度、点尺寸和建筑高度。
citybuilder配置参数

如何通过CityBuilder转出的url开发3D地图脚本?

ThingJS修改参数代码如下:
  1. // 先根据名称查询图层对象 名称是在CityBuilder中配置的图层的名称
  2. var primaryRoadLayer = app.query('primary')[0];
  3. var originWidth = primaryRoadLayer.renderer.width;
  4. new THING.widget.Button('修改线宽度', function () {
  5. if (primaryRoadLayer.renderer.width === originWidth) {
  6. primaryRoadLayer.renderer.width = 8;
  7. }
  8. else {
  9. primaryRoadLayer.renderer.width = originWidth;
  10. }
  11. });
复制代码
ThingJS使用url开发地球场景,结合CityBuilder更加轻松,无论是设计师还是开发,都能够更好地合作,完成3D项目发布


avatar
游客~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

130700ppkpl8x3t7tt1b1t