admin

第 1 位会员

管理员
个人信息
  • 加入于 2018-06-21 23:46:36
  • 最后登录时间 4个月前
个人成就
  • 发表文章次数 217
  • 发布回复次数 1521
  • 个人主页浏览次数 321
nodejs如何实现跨终端同屏?6年前

基本的思路如下:

  1. 假设现在有两个设备PC和Mobile,针对两个设备,有两个几乎一模一样的页面pc.html和mobile.html,其中pc.html用PC端浏览器打开,mobile.html用Mobile端浏览器打开。
  2. 然后我们可以用nodejs基于socket.io建立一个websocket的服务器,我们在pc.html和mobile.html嵌入可以捕获针对dom事件的代码,以点击事件为例,捕获click事件,然后通过websocket传送给node server,server通过转发给另一个设备。
  3. 假设mobile端有一次点击,mobile端将这次点击发送给node server,node server再转发给pc,pc接收到数据包之后,触发特定div的click。
  4. 综上,就完成了简单的跨终端同屏。

最后推荐大家去看一本叫《跨终端Web》的书籍。

如何把logo信息改成我们公司的logo6年前

有几种方法:

  1. 找到\Cesium-1.45\Source\Assets\Images\cesium_credit.png,然后替换成自己的logo即可,这样感觉会比较low一些。
  2. 找到\Cesium-1.45\Source\Scene\CreditDisplay.js的getDefaultCredit函数,然后替换掉其中的路径。
  3. 在页面中加入一个credit的div,然后根据官网的方式,加载自定义的widget

Openlayers 4.6如何添加图片对象到地图中6年前

Openlayers 4的插入图片对象方式有了一些改变,之前版本的bounds属性,已经没有了。但是思路是一样的,定义一个指定的区域,将图片贴进去,最后加入到图层中。代码如下:

       var imageExtent = [12981061.897802796-500, 4876961.53119492-500, 12981061.897802796+500, 4876961.53119492+500];
	         var image = new ol.layer.Image({
            source: new ol.source.ImageStatic({
              url: './img/radar.png',
              crossOrigin: '',
              projection: 'EPSG:27700',
              imageExtent: imageExtent
            })
          });
      map.addLayer(image);

其中map是定义好的ol的对象。

var map = new ol.Map({
        target: 'map',
		...});

Cesium如何加载3D Tiles6年前

根据官方示例代码:

	tileset = new Cesium.Cesium3DTileset({ url: tileset_url});
	tileset.readyPromise.then(function(tileset) {
		viewer.scene.primitives.add(tileset);
		default_HeadingPitchRange = new Cesium.HeadingPitchRange(0.0, -0.5,    tileset.boundingSphere.radius * 2.0);
		viewer.zoomTo(tileset, default_HeadingPitchRange);
	}).otherwise(function(error) {
		console.log(error);
	});

重点设置tileset_url即可,这是3D Tiles数据的路径,服务器是node的话,直接放入express支持的文件夹中,然后填写这个路径即可。

Cesium如何改变HomeButton(首页)的默认位置?6年前

实际上2楼的方法并不是一种好的方法,毕竟那是去修改源代码,目前我采用的方法是:

	tileset = new Cesium.Cesium3DTileset({ url: tileset_url});
	tileset.readyPromise.then(function(tileset) {
		viewer.scene.primitives.add(tileset);
		default_HeadingPitchRange = new Cesium.HeadingPitchRange(0.0, -0.5, tileset.boundingSphere.radius * 2.0);
		viewer.zoomTo(tileset, default_HeadingPitchRange);
		// overwrite homebutton
		viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
			e.cancel = true;
			viewer.zoomTo(tileset, default_HeadingPitchRange);
		});
	}).otherwise(function(error) {
		console.log(error);
	});

注意看// overwrite homebutton

相当于我重载了homebutton点击之后的响应函数,比如我的三维地球空间中,有一个3D Tiles的目标,我让我的点击事件每次都聚焦这个目标。

Cesium如何改变HomeButton(首页)的默认位置?6年前

网上一些博客提到的一些方法是修改源代码:

Camera.DEFAULT_VIEW_RECTANGLE = Rectangle.fromDegrees(89.5, 20.4, 110.4, 61.2);//homebutton默认跳转位置

https://www.cnblogs.com/mazhenyu/p/8315842.html

上述博客提到的位置我没有找到,我使用的Cesium版本是1.4.5,位置是在: \Cesium-1.45\Source\Scene\Camera.js 256行左右。

osgb转Cesium 3D tiles工具6年前

挺好的,根据楼主的方法目前测试结果如下:

原生的osgb数据预览

转换之后的数据通过Cesium加载

Your Site Analytics