记录--在高德地图实现卷帘效果

这篇具有很好参考价值的文章主要介绍了记录--在高德地图实现卷帘效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

记录--在高德地图实现卷帘效果

介绍

今天介绍一个非常简单的入门级小案例,就是地图的卷帘效果实现,各大地图引擎供应商都有相关示例,很奇怪高德居然没有,我看了下文档发现其实也是可以简单实现的,演示代码放到文末。本文用到了图层掩模,即图层遮罩,让图层只在指定范围内显示。

实现思路

1.创建目标图层,这里除了有一个默认的底图,还增加了卫星影像图和路网图层,后两者是可以被掩模的。因此在创建图层时通过设置rejectMapMask(默认值false)让图层是否允许被掩模。

2.提供实时设置掩模的方法renderMask,核心代码只需要map.setMask(mask)。

3.实现拖拽交互逻辑,监听拖拽过程,实时触发 renderMask

实现代码

1.创建目标图层

// 基础底图
  const baseLayer = new AMap.TileLayer({
      zIndex: 1,
      //拒绝被掩模 
      rejectMapMask: true,    
  })
 
  map = new AMap.Map('container', {
      center:[116.472804,39.995725],            
      viewMode:'3D',
      labelzIndex:130,
      zoom: 5,
      cursor:'pointer',
      layers:[
          // 底图,不掩模
          baseLayer,
          // 路网图层
          new AMap.TileLayer.RoadNet({
              zIndex:7
          }),
          // 卫星影像图层
          new AMap.TileLayer.Satellite()
      ]
  });

2.提供实时设置掩模的方法

function renderMask(){
    // 当前地图范围
    const {northEast, southWest} = map.getBounds()
    // 地理横向跨度
    const width = northEast.lng - southWest.lng
    // 拖拽条位置占比例
    const dom = document.querySelector('#dragBar')
    const ratio = Math.ceil(parseInt(dom.style.left) + 5) / map.getSize().width

    let mask = [[
        [northEast.lng, northEast.lat],
        [southWest.lng+ width * ratio, northEast.lat],
        [southWest.lng+ width * ratio, southWest.lat],
        [northEast.lng, southWest.lat]
    ]]
    
    map.setMask(mask)
}

3.实现拖拽交互逻辑

// 拖拽交互
function initDrag(){
    
    const dom = document.querySelector('#dragBar')
    dom.style.left = `${map.getSize().width/2}px`

    // const position = {x:0, y:0}        
    interact('#dragBar').draggable({
        listeners: {
            start (event) {                    
                // console.log(event.type, event.target)
            },
            move (event) {      
                // 改变拖拽条位置              
                const left = parseFloat(dom.style.left)
                const targetLeft = Math.min(Math.max(left + event.dx, 0), map.getSize().width - 10)
                dom.style.left = `${targetLeft}px`    
                
                if(event.dx !== 0){
                    renderMask()
                    //必须!强制地图重新渲染
                    map.render() 
                }                                                   
            },
            end(event){   
                // console.log(event.type, event.target)                                                      
            }
        }
    })
}

4.启动相关方法,完善交互逻辑

initDrag()
renderMask()
map.on('mapmove', renderMask)
map.on('zoomchange', renderMask)
window.addEventListener('resize', renderMask)

相关链接

本文代码演示

jsfiddle.net/gyratesky/z…

maptalks 图层卷帘效果

maptalks.org/examples/cn…

卫星+区域掩模

lbs.amap.com/demo/javasc…

本文转载于:

https://juejin.cn/post/7248618596976083000

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 记录--在高德地图实现卷帘效果文章来源地址https://www.toymoban.com/news/detail-534004.html

到了这里,关于记录--在高德地图实现卷帘效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录--写一个高德地图巡航功能的小DEMO

    加载地图 使用 AMapLoader.load 加载地图,从 控制台  申请一个属于自己的key 使用 new AMap.Map 实例化地图,并设置 mapStyle 为 \\\"amap://styles/grey\\\" ,也可以在官网上自己设计属于自己的风格,主要讲的不是这部分所以大概交代一下就过去了,实例化Map后返回一个map实例,后续的操作

    2024年02月11日
    浏览(35)
  • vue+echarts——实现3D地图+3D柱状图 效果——粗糙代码记录——技能提升

    最近看到同事在弄下面的这个图,这个图是从网上看到的,是某个网站的收费项目: 所以,最后的决定是通过 echarts 中的 3D地图 来写。但是写出来的效果不慎好看。功能是可以实现的。 初版效果图如下: 直接上代码: 我这边是存储到当前文件夹中了。。。 背景颜色是 ec

    2024年02月09日
    浏览(55)
  • 【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)

    本人只是一个普普通通的 GIS 学生, 下面是记录我的写的一个作业 demo 的内容, 可能会存在一定的错误, 欢迎在评论区私信交流! *完整功能展示看这里 (B站) *感兴趣可以下载完整 demo 看看 (阿里云盘) 本网站(GIS考研院校可视化专题网站)为2022年GIS考研初期准备择校的学生服务

    2024年02月13日
    浏览(82)
  • 记录下uniapp开发结合webview调用高德地图(路线规划,多路选择,双向通信)

    uniapp结合webview实现(微信和app上)简单版导航打车应用,总体实现方案是 在uniapp上嵌入web网页,在web网页上调用高德地图api实现渲染地图及路线 去高德开放平台注册账号并创建web应用,再生成web安全密钥和key 如果需要运行到微信上则需要开通微信公众平台上应用需要的定位

    2024年02月19日
    浏览(33)
  • 高德地图系列(三):vue项目利用高德地图实现地址搜索功能

    目录 第一章 效果图 第二章 源代码 高德地图为我们提供了搜索联想,以及搜索结果标记,该案例已将基础功能打通,后续我们肯定还会对功能有所修改,想实现自己想要的效果,基本上看高德地图文档对着改就好了(跟我们用别的工具一样做即可)  代码描述如下:  注意事

    2024年02月03日
    浏览(49)
  • 【uniapp】uniapp使用高德地图定位打包成安卓app的一些记录,比如打包后定位失效、

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 我的项目是uniapp打包成安卓app,这里不会讲解微信小程序之类的踩坑,只记录app端的用法 首先要知道,定位是返回经纬度,地图是渲染页面。这个不能搞混。 在uniapp中有map组件,具体可看官网的文档

    2023年04月16日
    浏览(42)
  • vue 高德地图Loca.GeoJSONSource、Loca.PolygonLayer绘制3D楼房、AMap.LabelMarker文字标注、Loca.ScatterLayer绘制水波扩散效果

    假设已经正确引入了高德地图,这里使用2.0版本,注意了,1.4.x版本的使用和2.x版本的使用方式不一样。有很多地方不兼容哦。 话说3D效果这一块,高德是真比不上百度地图哦,要不是项目一直用的高德地图,怕影响数据,就真想换百度地图了。百度地图有很多地方,地级市

    2024年04月25日
    浏览(32)
  • 高德地图实现-微信小程序地图导航

    1、在高德开放平台注册成为开发者 2、申请开发者密钥(key)。 3、下载并解压高德地图微信小程序SDK 注册账号(https://lbs.amap.com/)) 申请小程序应用的 key 应用管理(https://console.amap.com/dev/key/app)) - 我的应用 - 创建新应用 生成的 key 即可用在程序中 下载相关 sdk 文件,导入 amap-

    2024年02月08日
    浏览(71)
  • Vue 引入高德地图:实现地图展示与交互

    本文将介绍如何在Vue项目中引入高德地图,以及如何实现地图的展示和交互功能。我们将从安装依赖开始,然后配置高德地图的密钥和相关插件,最后演示如何在Vue组件中使用地图组件和实现基本的交互功能。通过本文的指导,您将能够轻松地在Vue项目中集成高德地图,实现

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包