基于Leaflet的全景综合展示实战

简介: 众所周知,当前许多GIS类应用底图数据都是有层级限制。在一些需要高清晰的实景展示需求下,就必须要结合一些更接近真实的展示。比如倾斜摄影测量、Bim技术、全景展示技术。而从经济成本和时间成本上来比较,全景展示技术成本较低,制作流程简单

      众所周知,当前许多GIS类应用底图数据都是有层级限制。在一些需要高清晰的实景展示需求下,就必须要结合一些更接近真实的展示。比如倾斜摄影测量、Bim技术、全景展示技术。而从经济成本和时间成本上来比较,全景展示技术成本较低,制作流程简单(基于全景图片,可使用外部软件辅助生成,参见《实战!使用pano2vr生成html5全景页面》)。

      通过本文可掌握如何使用LeafLet结合全景信息,构建真实的全景综合展示。模拟在地图上显示带了全景数据的marker,点击每个marker将调用具体的全景页面。

      前端技术:Html5+JQuery2.3+Leaflet1.7.1+Layer2.3(弹窗)

      第一步、Leaflet引入(详情参考:gis信息可视化之一Leaflet组件介绍)

L.CRS.CustomEPSG4326=L.extend({}, L.CRS.Earth, {
code: 'EPSG:4326',
projection: L.Projection.LonLat,
transformation: newL.Transformation(1/180, 1, -1/180, 0.5),
scale: function (zoom) {
return256*Math.pow(2, zoom-1);
    }
  });
//指定底图的投影,不能放在图层里面,否则坐标有偏移varmymap=L.map('mapid',{crs:L.CRS.CustomEPSG4326}).setView([30.673828, 113.554688], 5);

这里顺便演示了如何在leaflet中使用经纬度投影的数据,如何做投影转换。

第二步、设置标签底图

//标签L.tileLayer('http://localhost:8086/data/basemap_nowater/1-10label/{z}/{x}/{y}.png', {maxZoom: 10,minZoom:1,
id: 'mapbox/label',tileSize: 256,zoomOffset: -1    }).addTo(mymap);

第三步、准备全景数据接口

varlocal=["31.015279,121.552734","23.563987,115.708008","28.863918,112.587891","30.543339,112.983398","29.305561,103.535156"];
varcityInfo= ["上海市","广州市","长沙市","武汉市","成都市"];

备注:以上数据仅供参考,实际使用可基于后台接口

第四步、设置标绘marker

varcamareIcon=L.icon({
iconUrl: 'images/camera.jpg',
iconSize: [25, 25],
iconAnchor: [25, 25],
popupAnchor: [-13, -26]
  });

第五步、把目标数据和marker绑定

for(vari=0;i<5;i++){
varlocalStr=local[i];
varcity=cityInfo[i];
varlatLng=L.latLng(localStr.split(",")[0], localStr.split(",")[1]);
varcamareMarker=L.marker(latLng,{icon:camareIcon,title:city});
camareMarker.addTo(mymap);
camareMarker.on("click",onCamareMarkerClick);
    }

第六步、设置marker的点击事件

functiononCamareMarkerClick(e) {
layer.open({
type: 2,
title: false,//不需要title,页面更美观fix: false,
shadeClose: false,
maxmin: false,
area: ['80%', '90%'],
content: 'http://localhost:8086/fullview/qj4/qj4.html',
end: function(){
      }
    });
  }

 通过以上步骤基本就可以完成需求,将全景目标点在地图上定位,点击全景目标点,可以弹出全景页面,并可以操作全景图。

第七步、综合展示成果(示意)

image.png

marker标定

image.png

非目标点点击

image.png


目录
相关文章
|
6月前
|
机器学习/深度学习 API 开发工具
视觉智能平台常见问题之实现卡通效果图如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
148 3
|
前端开发 定位技术
高德地图进阶开发实战案例(9):涟漪动画标注的实现方案
高德地图进阶开发实战案例(9):涟漪动画标注的实现方案
155 0
|
3月前
|
自动驾驶 数据可视化 前端开发
【Echarts大屏】自动驾驶可视化大屏(附源码一键复制)
【Echarts大屏】自动驾驶可视化大屏(附源码一键复制)
|
6月前
|
数据可视化 前端开发 数据挖掘
数据分析可视化神器---streamlit框架,各种图表绘制,布局以及生产综合案例剖析
数据分析可视化神器---streamlit框架,各种图表绘制,布局以及生产综合案例剖析
762 0
|
前端开发
Echarts实战案例代码(49):基于不支持立体漏斗图Funnel的HTML+CSS解决方案
Echarts实战案例代码(49):基于不支持立体漏斗图Funnel的HTML+CSS解决方案
188 0
|
存储 JSON 数据可视化
ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)
ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)
642 0
|
搜索推荐 JavaScript 数据可视化
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
519 0
|
数据可视化 前端开发 CDN
漏刻有时数据可视化大屏常见问题(16):视频背景快速加载及展示的解决方案
漏刻有时数据可视化大屏常见问题(16):视频背景快速加载及展示的解决方案
89 0
|
监控 搜索推荐 数据可视化
漏刻有时垃圾分类回收数据可视化大屏监控源代码百度地图标注及地图个性化处理方案
漏刻有时垃圾分类回收数据可视化大屏监控源代码百度地图标注及地图个性化处理方案
107 0
|
移动开发 JavaScript 数据可视化
基于Three.js的全景展示框架-TPano
在一些全景展示类应用中,经常需要对采集到全景照片进行展示,一般情况下,可以通过制作人员使用pano2vr进行数据处理(教程可参见:实战!使用pano2vr生成html5全景页面),将处理好的数据发布至静态服务器,再关联相应位置即可完成全景展示(详情见基于Leaflet的全景综合展示实战)
693 1
基于Three.js的全景展示框架-TPano