svg 配合cesium使用
---恢复内容开始---
1、svg简介
在 2003 年一月,SVG 1.1 被确立为 W3C 标准。
参与定义 SVG 的组织有:太阳微系统、Adobe、苹果公司、IBM 以及柯达。
与其他图像格式相比,使用 SVG 的优势在于:
- SVG 可被非常多的工具读取和修改(比如记事本)
- SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
- SVG 是可伸缩的
- SVG 图像可在任何的分辨率下被高质量地打印
- SVG 可在图像质量不下降的情况下被放大
- SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
- SVG 可以与 Java 技术一起运行
- SVG 是开放的标准
- SVG 文件是纯粹的 XML
SVG 的主要竞争者是 Flash。
与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。
2、svg应用
svg是一个矢量图,一般的浏览器都会支持svg格式的矢量图片,我认为其中最难理解的就是svg的viewbox、height和width方面
首先svg的坐标格式是和中国人认为的坐标格式有所不同,svg的x轴和我们一般的坐标系相同(横向右方向为正方向),当时y轴和我们平时立即的相反(纵向下方向为正方向)
画svg到展示svg到屏幕上一般都是三个步骤,
第一部:在逻辑空间中(也就是想象着)建立一个坐标系,然后在此坐标系中完成图像的实现,
第二部:需要一个viewbox(也就是窗口),我们是通过这个窗口来观看你在逻辑空间中实现的图像,也就是窗口的外围都是不透明的,只有viewbox指定的在逻辑空间坐标系的范围内是可以看到我们所画图型处于的那个空间。viewbox中的四个数字(viewbox="0 0 10 10"),的含义是:左上角的x,左上角的y,x在x轴方向的衍射范围,y在y轴正方向的衍射范围。
第三部:根据width和height的大小来设置要在屏幕上显示的像素的大小,然后在把viewbox中看到的图形(不定是所画的图形,也可能是所画图形的一部分)复制到屏幕上。
3、在cesium中实现把svg图片贴道三维地球上
var rectangle;
function applyImageMaterial(primitive, scene) {
//Sandcastle.declare(applyImageMaterial); // For highlighting in Sandcastle.
primitive.appearance.material = new Cesium.Material({
fabric : {
type : 'Image',
uniforms : {
image : '../images/weiduoliya.svg'// '../images/wumenchenglou.svg'
}
}
});
}
function createButtons(scene) {
Sandcastle.addToolbarMenu([{
text : 'Image',
onselect : function() {
applyImageMaterial(rectangle, scene);
Sandcastle.highlight(applyImageMaterial);
}
}]);
}
function createPrimitives(scene) {
rectangle = scene.primitives.add(new Cesium.Primitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.RectangleGeometry({
rectangle : Cesium.Rectangle.fromDegrees(, , , 40.0),//west,south,east,north 2,-50,152,35
vertexFormat : Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT
})
}),
appearance : new Cesium.EllipsoidSurfaceAppearance({
aboveGround : false
})
}));
}
var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
createPrimitives(scene);
createButtons(scene);
一定要注意rectangle : Cesium.Rectangle.fromDegrees(90, 22, 117, 40.0),的坐标范围和svg图片中viewbox 的范围之间的关系。
---恢复内容结束---
svg 配合cesium使用的更多相关文章
- CSS变量(自定义属性)实践指南
本文翻译自:https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 转载请注明出处:葡萄城官网,葡萄城为开 ...
- CSS变量实用指南及注意事项
近年来,一些动态特性已经开始成为 CSS 语言本身的一部分. CSS变量 – 官方的术语为 "自定义属性" – 已经已经加入规范并且具有很好的浏览器支持,而 CSS mixins ...
- CSS 奇技淫巧 | 妙用 drop-shadow 实现线条光影效果
本文将介绍一种利用 CSS 滤镜 filter 的 drop-shadow(),实现对 HTML 元素及 SVG 元素的部分添加阴影效果,以实现一种酷炫的光影效果,用于各种不同的场景之中.通过本文,你 ...
- CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。
CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板. CLIP PATH (MASK) GENERATO ...
- Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript来打造属于自己的个性化社交分享系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_143 每一个应用程序,其实都会有分享的需求,比如一键分享一篇文章或者一些活动到微博或者微信亦或者是twitter等社交平台,因为人 ...
- 【Web动画】SVG 线条动画入门
通常我们说的 Web 动画,包含了三大类. CSS3 动画 javascript 动画(canvas) html 动画(SVG) 个人认为 3 种动画各有优劣,实际应用中根据掌握情况作出取舍,本文讨论 ...
- cesium自定义气泡窗口infoWindow
一.自定义气泡窗口与cesium默认窗口效果对比: 1.cesium点击弹出气泡窗口显示的位置固定在地图的右上角,默认效果: 2.对于习惯arcgis或者openlayer气泡窗口样式的giser来说 ...
- Notes:SVG(3)---滤镜和渐变
SVG滤镜使用filter标签来定义,该标签必须嵌套在defs元素里面,并且必须指定一个ID,以供引用. 在 SVG 中,可用的滤镜有: feBlend feColorMatrix feCompone ...
- Cesium应用篇:3控件(1)Clock
创建 跟Clock相关的主要有Animation控件和Timeline控件,通常两者会放在一起使用. 在Cesium中,Viewer默认开启这两个控件,如果你想要不显示控件,可以在Viewer初始化中 ...
随机推荐
- 吴裕雄 25-MySQL 临时表
MySQL 临时表MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间.临时表在MySQL 3.23版本中添加,如果你 ...
- JS拖拽元素原理及实现代码
一.拖拽的流程动作 ①鼠标按下②鼠标移动③鼠标松开 二.拖拽流程中对应的JS事件 ①鼠标按下会触发onmousedown事件 ②鼠标移动会触发onmousemove事件 ③鼠标松开会触发onmouse ...
- Linux命令_1
文件和目录命令 从P19开始的笔记 目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch mkdir rm 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 ...
- Redis原子计数器incr
一.前言在一些对高并发请求有限制的系统或者功能里,比如说秒杀活动,或者一些网站返回的当前用户过多,请稍后尝试.这些都是通过对同一时刻请求数量进行了限制,一般用作对后台系统的保护,防止系统因为过大的流量 ...
- 如何解决cacti的snmp error
第一,确定cacti所有的主机能ping通被监控主机:如果不能ping通,请确认网络配置和被监控主机的ip设置是否正确. 第二,如果能ping通,那么确认被监控主机是否启用snmpd服务: ps -e ...
- (django1.10)访问url报错Forbidden (CSRF cookie not set.): xxx
问题:页面访问时报错 Forbidden (CSRF cookie not set.): xxx 解决方法: 修改settings.py文件,注释掉 django.middleware.csr ...
- vps vultr centos7 搭建 伟皮恩
vultr 配置 64 bit OS CentOS 7 ×64 20 GB SSD 1 CPU 512MB Memory 500GB Bandwidth √ Enable IPv6 √ ...
- 利用MATLAB截取一张复杂图片中想要的区域
A = imread('1.jpg'); imshow(A); [x,y] = ginput(2); %确定图像上的两点利用ginput函数,返回值是两点的坐标 pic_1 = imcrop(A ...
- Django之crm
crm注册 crm注册Form from django import forms from crm import models from django.core.exceptions import V ...
- laravel中的模型关联之(一对多)
一对多 一对多就相当于,一个用户有多篇文章,这多篇文章都对应一个用户 这是一张文章表,一个用户有多篇文章,这里是在用户模型里面获取用户的所有文章, 第二个参数就是获取的模型文章表(post)里面的用户 ...