js室内地图开发_使用JS+Three.js+Echart开发商场室内地图客流信息统计功能(下)...

本文介绍了如何使用JavaScript、Three.js和Echart开发商场室内地图,包括实时视频摄像头标注、全景漫游360°图片标注,并实现地图点击展示功能。通过拖拽和缩放,用户可以查看不同楼层的摄像头和全景视图,同时提供了一个搜索框,允许用户按名称查找店铺并查看其运营情况。
摘要由CSDN通过智能技术生成

(2)实时视频及全景漫游的实现:

首先创建实时视频的摄像头图片标注和全景漫游的360°图片标注,标注实现后可在地图上点击相应的图片标注从而显示实时视频画面或360°全景画面,画面可拖拽可放大缩小。

各楼层实时视频的摄像头图片标注:

//创建各楼层摄像头标注function showCameras() {    var url = 'data/test666/model/camera1.js';    //json数据,定义摄像头所在楼层和位置

var infos = [{

fnum: 1,

cameras: [{

x: 12683472.409512023,

y: 2557870.1781415385,

},

{

x: 12683450.258123305,

y: 2557858.104209115

},

{

x: 12683430.863774385,

y: 2557865.8999765064

}

]

}, {

fnum: 2,

cameras: [{

x: 12683472.409512023,

y: 2557870.1781415385,

},

{

x: 12683450.258123305,

y: 2557858.104209115

},

{

x: 12683430.863774385,

y: 2557865.8999765064

}

]

}, {

fnum: 3,

cameras: [{

x: 12683472.409512023,

y: 2557870.1781415385,

},

{

x: 12683450.258123305,

y: 2557858.104209115

},

{

x: 12683430.863774385,

y: 2557865.8999765064

}

]

}];    //创建三维模型标注  实时视频摄像头

var ang = 0;

infos.forEach(function (info) {        var floorLayer = map.getFloor(info.fnum);        var layer = floorLayer.getOrCreateLayerByName("cameras", esmap.ESLayerType.MODEL3D);        var _id = 1;

info.cameras.forEach(function (camera) {            var im = new esmap.ES3DMarker({

x: camera.x,

y: camera.y,

id: _id++,

name: "camera",

url: url,

size: 44,

angle: ang,

height: 3,

showLevel: 16,

spritify: true

});

ang += 30;

layer.addMarker(im);//一个楼层共用一个图层        });

layer && layer.show3D();

});

}

点击地图展示实时视频或全景漫游弹框(div)函数active():

//地图点击标注后  临时创建div盒子  放全景图或实时视频function active(e, type) { // type: 1.pano; 0.videovar cc = $($(".drag")[0]).clone();    var wid = $(".drag").width();

$("body").append(cc);

cc[0].style.display = "block";    if (__xx 

__xx = wid;

}

cc[0].style.left = (__xx - wid - 20).toString() + "px";

cc[0].style.top = (__yy - 25 / 2).toString() + "px";    if (!type) {

cc.find('.content')[0].innerHTML = '';

cc.find('.title h2')[0].innerHTML = '实时视频';

createPopBox();

} else {

cc.find('.title h2')[0].innerHTML = '全景展示';

var box = document.createElement('div');

cc.find('.content').append(box);

box.className = 'psv-box';

oPano = new CreatePanorama({

container: box,

panorama: 'image/pano/' + e.id + '/',

six: 1

})

createPopBox(oPano);

}

}

展示的弹框可拖拽、大小可调整,功能实现如下函数:

/*可拖拽可放大缩小弹框*/function createPopBox(pano) { // pano: 0.视频,1.全景

/*-------------------------- +

获取id, class, tagName 函数

+-------------------------- */

var get = {

byId: function (id) {            return typeof id === "string" ? document.getElementById(id) : id;

},

byClass: function (sClass, oParent) {            var aClass = [];            var reClass = new RegExp("(^| )" + sClass + "( |$)");            va

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,针对您的问题,我可以为您提供一些思路和参考。 首先,您可以使用Mapbox GL JS库来创建室内地图。Mapbox GL JS是一个开源的JavaScript库,它可以帮助您创建交互式、高性能的地图应用程序。此外,Mapbox还提供了丰富的地图数据和API,可以帮助您快速构建地图应用。 其次,您可以使用Three.js库来创建3D模型和动画。Three.js是一个轻量级的JavaScript库,它可以帮助您在网页上呈现3D图形和动画。您可以使用Three.js来创建室内景和模型,然后将其集成到Mapbox GL JS地图中。 下面是一些具体的步骤和参考资料: 1. 创建Mapbox GL JS地图:您可以参考Mapbox官方文档来学习如何创建Mapbox GL JS地图。文档链接:https://docs.mapbox.com/mapbox-gl-js/api/ 2. 创建Three.js景和模型:您可以使用Three.js来创建室内景和模型。首先,您需要创建一个Three.js景,然后向其中添加模型和光源。您可以参考Three.js官方文档来学习如何创建景和模型。文档链接:https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene 3. 将Three.js景和模型集成到Mapbox GL JS地图中:您可以使用Mapbox GL JS的自定义图层功能来将Three.js景和模型集成到地图中。首先,您需要创建一个自定义图层,并在其中嵌入Three.js景。然后,您可以使用Mapbox GL JS的渲染回调函数来更新景和模型。您可以参考Mapbox GL JS官方文档来学习如何创建自定义图层。文档链接:https://docs.mapbox.com/mapbox-gl-js/example/custom-style-layer/ 4. 其他参考资料:以下链接提供了一些关于Mapbox GL JSThree.js集成的示例和教程,您可以参考它们来学习如何使用这些库来创建室内地图。 - Mapbox GL JS + Three.js 实现室内地图:https://zhuanlan.zhihu.com/p/157280541 - Threebox:一个将Three.js集成到Mapbox GL JS的库:https://github.com/jscastro76/threebox - 在Mapbox GL JS使用Three.js来创建3D建筑物:https://blog.mapbox.com/using-three-js-to-build-complex-3d-buildings-in-mapbox-gl-js-8e7d3c444f4c 希望这些信息能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值