加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Cesium学习笔记-工具篇05-DynamicDrawTool交互绘制

(2018-07-28 16:40:31)
标签:

cesium

drawhelper

交互绘制

动态绘制

dynamicdraw

分类: Cesium
前两篇博客我们学习了cesium使用频率最高的一个工具:drawhelper(github源码),以及它的一个重要功能:ChangeablePrimitive-可编辑图形。本篇博客我们再学习另外一个重要功能:
动态画图-DynamicDrawTool。
1动态绘制点:
我们可以通过一下简单的几行代码调用即可实现上述功能:
1画点:
DynamicDrawTool.startDrawingMarker(viewer, "点击添加项目中心点", function (cartesian) {
        //回调cartesians获取点位信息
        });
2画线:
 var lineOption = {
            width: 5,
            geodesic: true
        };
        DynamicDrawTool.startDrawingPolyshape(viewer, false, lineOption, function (cartesians) {
             //回调cartesians 获取点位信息
        });
3画面:
 var gonOption = {
            width: 5,
            geodesic: true
        };
        DynamicDrawTool.startDrawingPolyshape(viewer, true, gonOption, function (cartesians) {
             //回调cartesians 获取点位信息
        });
此示例中我修改了鼠标tooltip方式,使用前面介绍的entity方式:Cesium学习笔记-工具篇01-Tooltip-entity方式
var CesiumTooltip = (function () {
    var isInit = false;
    var viewer;
    var labelEntity;

    function _() { };

    _.initTool = function (_viewer) {
        if (isInit) { return; }
        viewer = _viewer;
        labelEntity = viewer.entities.add({
            position: Cesium.Cartesian3.fromDegrees(0, 0),
            label: {
                text: '提示',
                font: '15px sans-serif',
                pixelOffset: new Cesium.Cartesian2(8, 8),//y大小根据行数和字体大小改变
                horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                showBackground: true,
                backgroundColor: new Cesium.Color(0.165, 0.165, 0.165, 1.0)
            }
        });
        labelEntity.show = false;
        isInit = true;
    }

    _.setVisible = function (visible) {
        if (!isInit) { return; }
        labelEntity.show = visible ? true : false;
    };

    _.showAt = function (position, message) {
        if (!isInit) { return; }
        if (position && message) {
            labelEntity.show = true;
            var cartesian = viewer.camera.pickEllipsoid(position, viewer.scene.globe.ellipsoid);// 
            if (cartesian) {
                labelEntity.position = cartesian;
                labelEntity.show = true;
                labelEntity.label.text = message;
            } else {
                labelEntity.show = false;
            }
        }
    };

    return _;
})();
我们可以结合DynamicDrawTool和ChangeablePrimitive这两个工具灵活实现drawhelper工具。
示例代码:github源码


我的学习公众号也开通,感兴趣的小伙伴们可以加关注:giserYZ2SS,代码交流小伙伴在公众号发消息,我会一一回复的。

http://s14/small/006pZnPwzy7q1bYCcFvad&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有