基于AGS JS开发自定义贴图图层
文章标题:基于AGS JS开发自定义贴图图层指南
一、前言
在景区地图展示中,我们常常需要将多张图片展示在地图上,并且希望这些图片随着地图的缩放而相应变化。传统方法虽然可行,但工作量巨大。那么,有没有更简洁高效的方法呢?本文将为大家介绍几种解决思路。
二、解决思路
方法一:基于grahpic和symbol解决
获取图片的左上角和右下角地理坐标,将grahpic的geometry设为左上角坐标,symbol赋予图片的url。根据地理坐标转换获取screenwidth和screenheight,设置symbol的xoffset和yoffset属性。监听地图的缩放事件,调整symbol的width和height。这种方法实现简单,直接利用AGS已有对象完成,但当地图放大到一定级别时,可能存在symbol不再渲染的问题。
方法二:直接添加DIV+IMG解决
直接在Map所在的ParentDIV中为图片创建DIV+IMG。通过换算地理坐标的屏幕坐标来设置各IMG的长宽以及DIV的left和top等属性。需要注意的是,要监听地图的拖拽事件并进行相应处理。这种方法可以确保地图缩放到任意级别都能同样缩放展示图片,但图片本身无法响应地图事件,如缩放、拖拽等。
方法三:继承AGS的Layer自定义开发贴图图层
三、详细实现(继承AGS的Layer开发贴图图层)
在Map的DOM中新增一个DIV用于承载图片元素。同时实现一些基本的方法如添加、删除图层等。
2. 监听缩放事件进行重绘
根据当前地图的缩放级别和图片的地理坐标,计算每个IMG的width和height,并进行相应的渲染。
3. 监听平移事件进行坐标变化
当地图发生平移时,根据新的地图中心点和图片的地理坐标计算新的屏幕坐标,并更新DIV和IMG的位置。
四、几点注意
1. 当继承的是Layer时,setMap函数需要返回的是用DOJO生成的DIV。如果继承的是GraphicLayer,返回的不能是DIV,因为GraphicLayer是基于SVG构造的。
2. 为提高显示效率,平移重绘时最好直接改变DIV的左上角位置,而不是删除所有IMG再重新添加。这样可以减少DOM操作的次数,提高页面渲染速度。
五、结果展示(以归元寺为例)
(此处可展示一些具体的实现效果和图片)
以上就是本文的全部内容,希望对大家的学习有所帮助。同时也希望大家能够多多支持我们的网站——狼蚁SEO。如果你有任何问题或建议,欢迎留言交流。
结束 排版:请忽略之前的格式化代码如`Cambrian.render('body')`等不相关语句或格式要求。
编程语言
- 基于AGS JS开发自定义贴图图层
- 用asp获取微软安全更新列表的代码 小偷程序
- PHP记录页面停留时间的方法
- JavaScript实现带标题的图片轮播特效
- vue异步axios获取的数据渲染到页面的方法
- JavaScript中重名的函数与对象示例详析
- nodejs个人博客开发第六步 数据分页
- ASP.NET中实现导出ppt文件数据的实例分享
- jQuery常用的4种加载方式分析 -font color=red-原创-
- jQuery中offsetParent()方法用法实例
- JavaScript选取(picking)和反选(rejecting)对象的属性方
- PHP大神的十大优良习惯
- 浅谈vue自定义全局组件并通过全局方法 Vue.use()
- SQL Server配置管理器无法连接到WMI提供程序
- asp实现的可以提醒生日的几种方法附代码
- Swiper 4.x 使用方法(移动端网站的内容触摸滑动)