分享
查看: 1404|回复: 0

[分享] ThingJS:3D版PUSH开发方法简略

[复制链接]

ThingJS:3D版PUSH开发方法简略

发表于 2020-9-4 10:15:12 来自 分享 阅读模式 倒序浏览
zzv_icon1404 zzr_icon0 查看全部


经常用手机,我们都会收到很多PUSH,那在3D开发中,ThingJS如何进行弹窗信息显示呢?

无论是2D地图还是3D地图,经常会有展示信息面板的需求,可以用来表示物体对象的位置,也可以实时展示某物体的状态。在ThingJS开发教程中,这些有地理位置的坐标,我们称之为“信息弹窗InfoWindow”。

ThingJS:3D版PUSH开发方法简略

thingjs开发中支持使用layer来显示Web界面的信息弹窗。为了更加方便前端用户操作,我们使用THING.Utils.dynamicLoad引用layer的官方JS文件,可在场景上2D界面创建一个按钮,点击按钮既可出现layer弹窗。

ThingJS:3D版PUSH开发方法简略

ThingJS底层内置了三种信息面板的标准形式,会根据对象userData身上的属性自动生成信息面板,这是我们底层定义的界面样式,用户无法修改。此外用户还可以自定义信息面板,通过代码自行开发,自行规划界面样式和操作。

标准参数说明如下,包括displayMode,type和style,都是预设的。

1.displayMode:三种显示模式

CMAP.DisplayMode.Click 点击显示

CMAP.DisplayMode.Always 常显

CMAP.DisplayMode.MouseEnter 鼠标移入显示(悬浮显示)

2.type:信息面板类型

CMAP.InfoWindowType.Standard 标准

CMAP.InfoWindowType.Custom 自定义

3.style:预置的样式

在type为CMAP.InfoWindowType.Standard时生效

CMAP.InfoWindowStyle.Default 默认黑色

CMAP.InfoWindowStyle.Blue 蓝色

CMAP.InfoWindowStyle.White 白色

这是标准信息面板的代码示例。

  1. var geoPoint = app.create({
  2. type: 'GeoPoint',
  3. name: 'geoPoint0',
  4. coordinates: [ 116.405, 39.906],
  5. userData: {'type': '地铁站','name':'前门地铁站'},
  6. renderer: {
  7. type: 'image', // image代表创建图片类型的点
  8. url: 'image/uGeo/pop.png', // 图片的url
  9. size: 5 // 尺寸
  10. },
  11. infoWindow:
  12. {
  13. 'title': '标题',
  14. 'displayMode': CMAP.DisplayMode.Click,//点击显示
  15. 'type': CMAP.InfoWindowType.Standard,//标准indoWindow
  16. 'style': CMAP.InfoWindowStyle.Default,//默认样式 黑色
  17. 'pivot': [0.5, 1.3],//界面的轴心,以百分比表示界面轴心位置。[0,0] 代表界面左上;[1,1] 代表界面右下 pivot可大于1用于像素级的偏移
  18. 'fieldData': [
  19. {
  20. 'field': 'name',
  21. 'alias': '名称'
  22. },
  23. {
  24. 'field': 'type',
  25. 'alias': '类型'
  26. }]
  27. },//配置要展示哪些字段以及设置字段名称的别名(显示的名称)
  28. });
复制代码


这是自定义信息面板的代码示例。

  1. var infoWindowHtml = '
  2. '
  3. + '
  4. '
  5. + '
  6. '
  7. + ' {{name}}
  8. '
  9. + ' {{type}}
  10. '
  11. + '
  12. '
  13. + '
  14. '
  15. + '';
  16. var geoPoint = app.create({
  17. type: 'GeoPoint',
  18. name: 'geoPoint0',
  19. coordinates: data.features[3].geometry.coordinates,
  20. userData: data.features[3].properties,
  21. renderer: {
  22. type: 'image', // image代表创建图片类型的点
  23. url: 'image/uGeo/pop.png', // 图片的url
  24. size: 5 // 尺寸
  25. },
  26. infoWindow:
  27. {
  28. 'displayMode': CMAP.DisplayMode.Click,//点击显示
  29. 'type': CMAP.InfoWindowType.Custom,//自定义InfoWindow
  30. 'customHtml': infoWindowHtml
  31. },
  32. });
  33. pointLayer.add(geoPoint);
复制代码


注意:自定义html的标签中{{name}}代表使用对象userData中的name字段的值。

弹窗信息显示如此简单,ThingJS充分满足开发者的3D创作需求!


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

本版积分规则

130700ppkpl8x3t7tt1b1t