点标记

1.构造方法:

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

代码实例:

let billboardGraphics = {         
                image: 'https://mhc.ixiera.com/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 markerPosition = [104.336329, 35.979957, 3000]       
let option = { 
                needTrans: true, 
                editable: false, 
                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.完整代码示例

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://mhc.ixiera.com/mhc/main.js"></script>
        <script src="https://mhc.ixiera.com/mhc/Cesium-1.120/Build/Cesium/Cesium.js"></script>
        <script src="https://mhc.ixiera.com/mhc/Cesium3DTile.js"></script>
        <title>Marker</title>
        <style type="text/css">
            .btnbar{
                position: absolute;
                top: 10px;
                left: 10px;
            }
            .btnbar button{
                padding: 5px 10px;
                margin-right: 15px;
            }
        </style>
    </head>
    <body>
        <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: 'https://mhc.ixiera.com/mhc/img/st_uav.png',
                width:50,
                height: 35,
                verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
            }     
            let markerPosition = [104.336329, 35.979957, 3000] 
            let editable = false;    
            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>
    </body>
</html>

15.展示效果

Demo地址:

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

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