mapv的使用记录

1.api
2.官方示例
3.在leaflet中使用

引入:
方法一:<script src="http://mapv.baidu.com/build/mapv.js"></script>
方法二:cnpm install mapv 导入mapv的依赖

import { tiandituTileLayer } from '@/libs/wmtslayer/L.TiandituTileLayer'
import 'mapv'
import * as mapv from 'mapv'
//地图初始化,外网
let map = L.map(mapId, {
  crs: L.CRS.TianDiTu_MercatorCRS, //坐标参考系统
  center: mapCenter, //经纬度
  zoom: 12, //放大等级
  minZoom: 0,
  maxZoom: 17,
  logoControl: false, // 隐藏logo版权
  zoomControl: false, // 缩放控件
  attributionControl: false // 隐藏文字版权
})

其他参考官方实例来

与百度地图不同:mapvLayer = new mapv.baiduMapLayer(map, geojsonDataSet, geojsonOptions);
在leaflet中使用时:mapvLayer = new mapv.leafletMapLayer(timeDataSet, timeOptions).addTo(map);

其中
Openlayer:new mapv.OpenlayersLayer ()
百度地图:new mapv.baiduMapLayer ()
Leaflet:new mapv.leafletMapLayer()
maptalk: new mapv.MaptalksLayer()
google: new googleMapLayer()

4.参考文章
mapv的一些例子,画线,画区域等
mapv 结合leaflet使用
OL4使用mapV

### 集成MapV库到Cesium 为了在 Cesium 中集成并使用 MapV 库进行可视化开发,开发者可以遵循特定的方法来确保两个库之间的兼容性和功能性。以下是具体方法: #### 准备工作 首先,在项目中引入必要的依赖项。这通常意味着要通过 npm 或者直接下载的方式将 Cesium 和 MapV 添加至前端工程环境中。 对于 Cesium 而言,可以通过官方文档指导完成安装配置[^1]。而对于 MapV,则可以从其 GitHub 页面找到最新的版本,并按照说明加入 HTML 文件头部或者利用包管理工具如 yarn/npm 安装[^3]。 #### 数据准备与处理 MapV 主要是用来展示大数据量的地图热力图、轨迹动画等功能。因此,在实际操作前需准备好相应的地理坐标数据集以及样式定义规则。这些数据可能来自于服务器端API请求返回的结果或者是本地静态文件加载得到的数据集合。 #### 创建地图容器 创建一个 DOM 元素作为承载整个场景的基础画布,设置合适的宽高比例以便于后续渲染效果调整。此部分代码如下所示: ```html <div id="cesiumContainer"></div> <script src="./path/to/cesium/Cesium.js"></script> <link href="./path/to/cesium/Widgets/widgets.css" rel="stylesheet"> ``` #### 初始化 Cesium 场景 初始化 Cesium Viewer 实例对象,指定之前创建好的 div ID 以及其他选项参数(比如是否开启地形服务等)。这段逻辑应该放在页面完全载入之后执行。 ```javascript const viewer = new Cesium.Viewer('cesiumContainer', { terrainProvider : Cesium.createWorldTerrain() }); ``` #### 加载矢量瓦片层或其他底图源 根据需求决定采用何种方式获取背景影像或矢量切片作为底层显示素材。这里可以选择调用在线 API 接口或是离线部署的服务地址。 ```javascript viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url : 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}@2x.png', subdomains : ['a','b','c'] })); ``` #### 使用 MapV 绘制图形覆盖物 当一切准备工作就绪后就可以着手构建基于 MapV 的视觉化表达形式了。下面给出一段简单的例子用于演示如何绘制热点区域分布情况。 ```javascript import * as mapv from 'mapv'; // 假设已有一个包含经纬度坐标的数组 pointsData let dataset = new mapv.DataSet(pointsData); let heatmapLayer = new mapv.Layer({ zIndex: 1, draw: function (renderData, projection) { let canvas = this.getCanvas(); context.clearRect(0, 0, canvas.width, canvas.height); renderData.forEach(function(data){ var pixel = projection.latlngToPixel([data.geometry.coordinates[1], data.geometry.coordinates[0]], zoomLevel); // Draw heatmaps using the given coordinates and other properties. ... }); } }); heatmapLayer.setDataSet(dataset); viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances: [], appearance: new Cesium.EllipsoidSurfaceAppearance(), asynchronous: false })); function updateHeatmap() { const cameraPosition = viewer.camera.positionCartographic; const currentZoomLevel = Math.log(viewer.camera.frustum.near / viewer.camera.frustum.far) / Math.LN2; heatmapLayer.draw(currentZoomLevel); } updateHeatmap(); viewer.scene.postRender.addEventListener(updateHeatmap); ``` 上述过程展示了怎样把来自 MapV 的自定义图层嵌入到由 Cesium 构建的世界视窗之中。值得注意的是,由于两者的工作机制存在差异,所以在融合过程中可能会遇到一些挑战,例如投影转换问题、性能瓶颈等等。针对这些问题则需要进一步深入研究两者的特性来进行针对性解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值