js实现类似百度地图的缩放拖动功能

js实现类似百度地图的缩放拖动功能

使用的前端框架为vue

采用vue的框架,通过canvas的缩放绘制和外层div的滚动条控制实现功能

滚轮事件代码

    handleScroll(e) {
      console.log(e.deltaY)

      let _this = this
      if (e.deltaY > 0 && _this.zoomtimes > 1) {
        _this.zoomtimes = (_this.zoomtimes * 10 - 2) / 10
      } else if (e.deltaY < 0) {
        _this.zoomtimes = (_this.zoomtimes * 10 + 2) / 10
      }
      this.down_x = e.clientX
      this.down_y = e.clientY
      if (e.deltaY > 0) {
        _this.direction = 1
      } else {
        _this.direction = 0
      }
      e.preventDefault()
    },

 wheelxy() {
      let _this = this
      if (_this.direction == 0) {
        _this.$store.state.scroll_x = _this.$refs.imageWrapper.scrollLeft =
          (((_this.$refs.imageWrapper.clientWidth - 10) * _this.zoomtimes) /
            ((_this.$refs.imageWrapper.clientWidth - 10) *
              (_this.zoomtimes - 0.2)) -
            1) *
            (_this.down_x - 67 + _this.$refs.imageWrapper.scrollLeft) +
          _this.$refs.imageWrapper.scrollLeft
        _this.$store.state.scroll_y = _this.$refs.imageWrapper.scrollTop =
          (((_this.$refs.imageWrapper.clientHeight - 10) * _this.zoomtimes) /
            ((_this.$refs.imageWrapper.clientHeight - 10) *
              (_this.zoomtimes - 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Cesium是一个基于Web的地理数据可视化引擎,可以实现类似百度地图2D和3D小组件的功能。 首先,我们可以使用Cesium通过加载地图瓦片进行2D地图的展示。地图瓦片可以由百度地图提供的地图切片服务获得。使用Cesium提供的ImageryLayer可以将地图瓦片部署到地图上,并可以设置加载时的缩放级别、地图范围等参数。通过这种方式,我们可以在Cesium中实现类似百度地图的2D地图显示。 其次,Cesium提供了强大的3D地理数据可视化功能。我们可以将百度地图提供的地理数据转换为Cesium支持的数据格式,如GeoJSON或KML等。然后,使用Cesium的Entity和Primitive等功能可以将这些数据呈现在3D场景中。例如,我们可以将建筑物、道路等地理要素以3D模型或纹理贴图的形式展示出来,实现类似百度地图的3D视觉效果。同时,Cesium还支持添加图层叠加效果,可以将地形、影像等各种维度的地理数据叠加在一起展示,提供更丰富的地理信息。 除此之外,Cesium还提供了丰富的交互功能,如平移、缩放、旋转、视角切换等。这些功能可以让用户自由浏览地图,获取感兴趣的地理信息。同时,我们还可以通过添加标注、信息窗口等方式实现地点的查询和展示功能,使用户能够通过点击地图获取具体的地点信息。 综上所述,Cesium作为一个强大的地理可视化引擎,可以通过加载地图瓦片和支持的地理数据格式,实现类似百度地图2D和3D小组件的功能。同时,通过丰富的交互和数据展示方式,能够提供更好的用户体验和地理信息的展示效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值