点标记

1.构造方法:

const marker = new MchCesium.Marker(id, billboardGraphics, position, option)

代码实例:

let billboardGraphics = {         image: './mhc/img/st_uav.png',         width:50,         height: 35,         verticalOrigin: Cesium.VerticalOrigin.BOTTOM,         horizontalOrigin: Cesium.HorizontalOrigin.CENTER,       }       let labelGraphics = {         text: '这是marker的label',         font: '14px Microsoft YaHei',         verticalOrigin: Cesium.VerticalOrigin.BOTTOM,         pixelOffset: new Cesium.Cartesian2(0, -40)       }       let editable = false       let markerPosition = [104.336329, 35.979957, 3000]       let option = { needTrans: true, editable: editable, showHeightLine: true, label: labelGraphics }       let marker = new MchCesium.Marker('testMarker', billboardGraphics, markerPosition, option)       marker.createMarkerEntity()

效果:

2.参数说明

id(String):点标记id(全局唯一,不可重复)

billboardGraphics(Object):点标记的图标配置。具体配置参考如下链接:http://cesium.xin/cesium/cn/Documentation1.62/BillboardGraphics.html

position(Array):点标记位置(经纬度数组,如[119.34, 32.34])

option(Object):其他配置项。包含如下属性:needTrans(Boolean):是否需要gcj转wgs84; editable(Boolean):点标记是否可编辑; showHegihtLine(Boolean):是否显示点标记到地面的铅垂线及投影。extData(Object) 自定义数据;label(Object):可选,如果点标记想带Label,则设置此项,具体配置参考如下链接:http://cesium.xin/cesium/cn/Documentation1.62/LabelGraphics.html

3.createMarkerEntity() 生成点标记实体,并在地图上渲染

在用构造方法构造marker实例后,需要使用该方法在地图上生成maker实体。

实例:marker.createMarkerEntity()

4.changeMarkerEditable(editable) 改变点标记的可编辑性

在生成marker实例后,可以使用该方法动态改变点标记是否可编辑。

参数说明:editable(Boolean):点标记是否可编辑,默认值为true。

实例:marker.changeMarkerEditable(false)

5. destroy() 销毁点标记实例

实例:marker.destroy()

6.show() 在地图上显示点标记

实例:marker.show()

7.hide() 在地图上隐藏点标记

实例:marker.hide()

8.setZIndex(zIndex) 设置点标注的层级

参数说明:zIndex(Number):点标注的显示层级。

实例:marker.setZIndex(100)

9.setPosition(position) 设置点标记的位置

参数说明:position(Array): 数组的第一个元素为经度,第二个元素为纬度,如[119.33, 38.22]。

实例:marker.setPosition([119.16, 39.04])

10.setLabel(labelGraphics) 给点标记设置其label

参数说明:labelGraphics(Object):label实体的配置。具体参考如下链接:http://cesium.xin/cesium/cn/Documentation1.62/LabelGraphics.html

实例:

  marker.setLabel({       text: '这是marker的label',       font: '14px Microsoft YaHei',       verticalOrigin: Cesium.VerticalOrigin.BOTTOM,       pixelOffset: new Cesium.Cartesian2(0, -40)     })

11.onDarg(callback) 监听点标记的拖拽事件,并在拖拽结束后调用callback

参数说明:callback(Function):拖拽点标记结束后的回调函数。callback中的参数e含有两个属性,分别为position(Object)拖拽后点标记的屏幕坐标,target(Object)地图上的点标记实体。

实例:

marker.onDrag(function (e) {       console.log(e)     })

12.onClick(callback) 监听点标记的点击事件,并在点击后调用callback

参数说明:callback(Function):点击点标记后的回调函数。callback中的参数e含有两个属性,分别为position(Object)点击后点标记的屏幕坐标,target(Object)地图上的点标记实体。

实例:

marker.onClick(function (e) { console.log(e)  })

13.onRightClick(callback) 监听点标记的右键点击事件,并在点击后调用callback

参数说明:callback(Function):点击点标记后的回调函数。callback中的参数e含有三个属性,分别为position(Object)点击后点标记的屏幕坐标,target(Object)地图上的点标记实体,extData自定义数据。

实例:

marker.onRightClick(function (e) { console.log(e)  })  

14.完整代码示例

  <div id="cesiumContainer"></div> <div class="btnbar">     <button id="show">显示点标注</button>     <button id="hide">隐藏点标注</button>     <button id="addLabel">添加Label</button>     <button id="destroy">销毁点标注</button>     <button id="toggleEditable">切换可编辑性</button>   </div> <script type="text/javascript">     const view3D = MchCesium.init('cesiumContainer', true)         let billboardGraphics = {       image: './mhc/img/st_uav.png',       width:50,       height: 35,       verticalOrigin: Cesium.VerticalOrigin.BOTTOM,       horizontalOrigin: Cesium.HorizontalOrigin.CENTER,     }     let editable = false     let markerPosition = [104.336329, 35.979957, 3000]     let option = { needTrans: true, editable: editable, showHeightLine: true }     let marker = new MchCesium.Marker('testMarker', billboardGraphics, markerPosition, option)     marker.createMarkerEntity()     document.getElementById('addLabel').addEventListener('click', function () {       marker.setLabel({         text: '这是marker的label',         font: '14px Microsoft YaHei',         verticalOrigin: Cesium.VerticalOrigin.BOTTOM,         pixelOffset: new Cesium.Cartesian2(0, -40)       })     })     document.getElementById('show').addEventListener('click', function () {       marker.show()     })     document.getElementById('hide').addEventListener('click', function () {       marker.hide()     })     document.getElementById('destroy').addEventListener('click', function () {       marker.destroy()     })     document.getElementById('toggleEditable').addEventListener('click', function () {       editable = !editable       marker.changeMarkerEditable(editable)     })     marker.onDrag(function (e) {       console.log('点标记被拖动', e)     })     marker.onClick(function (e) {       console.log('点标记被点击', e)     })     MchCesium.viewer.camera.flyTo({       destination: Cesium.Cartesian3.fromDegrees(104.336329, 35.979957, 3000)     })   </script>

15.展示效果

Demo地址:

https://mhc.ixiera.com/html/cesiumDemo/demo_marker.html

本文档来自—MCHMAP 丨 地图引擎平台