(二十一)WebGIS中鹰眼的实现思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.背景
鹰眼功能是WebGIS中的一种常见功能,利用一些开源的框架实现起来非常方便。当然,按照博主从底层谈WebGIS这套系列的风格,在这里还是跟大家一起探讨探讨不借助第三方框架开发鹰眼的简单实现思路。
2.鹰眼功能分析

3.实现思路设计
3.1主图平移时与鹰眼图的联动
a.主图进行平移时,在平移完成后抛出地图平移事件,该事件中包含真实平移地理长度(GeoPanX,GeoPanY)参数。
b.鹰眼图监听到该平移事件,获取到平移地理长度后,换算出此时对应鹰眼地图的平移屏幕坐标(screenPanX,screenPanY),与鹰眼地图canvas的XY坐标进行相加,实现鹰眼地图的联动。
c.鹰眼地图平移超出缓存瓦片范围时,需要重新获取瓦片。
3.2主图缩放时鹰眼图范围重绘
a.主图缩放时会抛出地图缩放事件,该事件中会包含此时主图屏幕范围对应的真实地理范围参数(GeoScreenLeft,GeoScreenTop,GeoScreenRight,GeoScreenBottom)以及此时的地图级别(maplevel)。
b.鹰眼图监听该缩放事件,获取到此时主图的真实地理范围,以及主图地图级别。
c.判断此时主图级别是否满足绘制主图返回的参数设置,如果满足,则在鹰眼中绘制此时的主图范围。
d.将此时的主图地理范围坐标转换为鹰眼上的屏幕坐标,在鹰眼上进行绘制。
3.3鹰眼范围框拖拽是主图联动
a.鹰眼的范围框监听鼠标事件,响应拖拽操作。
b.范围框拖拽完毕后,会将拖拽的真实地理长度(eagleGeoPanX,eagleGeoPanY)以参数的形式随同鹰眼平移事件一起被触发。
c.主图监听鹰眼平移事件,获取到鹰眼真实平移地理长度后进行换算成与主图对应的屏幕平移坐标,对主图进行平移。
d.主图平移后,再次触发主图平移事件,如3.1中流程所描述,最后鹰眼也会进行平移联动。
3.4注意事项
a.鹰眼上地图不能相应鼠标事件(缩放、平移)。
b.鹰眼上的范围框颜色应该可以定制。
4.成果展示

-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
(二十一)WebGIS中鹰眼的实现思路的更多相关文章
- (二十)WebGIS中图层树功能的设计和实现
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在GIS的桌面工具中,比如arcgis desktop或者S ...
- AngularJS进阶(二十一)Angularjs中scope与rootscope区别及联系
Angularjs中scope与rootscope区别及联系 scope是html和单个controller之间的桥梁,数据绑定就靠他了.rootscope是各个controller中scope的桥梁 ...
- (十二) WebGIS中矢量图层的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在前几章中我们已经了解了什么是矢量查询.屏幕坐标与地理坐标之 ...
- (十一)WebGIS中要素(Feature)的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在GIS中元素一般分为点元素,线元素,面元素以及symbol ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料, ...
- 从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图
从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图 作者:naaoveGI… 文章来源:naaoveGIS 点击数:2063 更 ...
- 《剑指Offer》题二十一~题三十
二十一.调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 测试用例: 功能测试:输入数组中的奇 ...
- 剑指Offer(二十一):栈的压入、弹出序列
剑指Offer(二十一):栈的压入.弹出序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ...
随机推荐
- ScrollView嵌套RecyclerView时滑动出现的卡顿
原文连接:http://zhanglu0574.blog.163.com/blog/static/113651073201641853532259/ 现象: 一个界面有多个RecyclerView ...
- 浅谈Js原型的理解
一.js中的原型毫无疑问一个难点,学习如果不深入很容易就晕了! 在参考了多方面的资料后,发现解释都太过专业,对于很多还没有接触过面向对象 语言的小白来说,有理解不了里面的专有名词!如果你没 ...
- jQuery下的轮播
以前用js做过轮播 今天用JQ插件是最基本的 在官网可以下 布局:<body><div id="div1"> <ul id="lunbo&q ...
- 【转】Apache 配置虚拟主机三种方式
Apache 配置虚拟主机三种方式 原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...
- SQL SERVER全面优化-------写出好语句是习惯
前几篇文章已经从整体提供了诊断数据库的各个方面问题的基本思路...也许对你很有用,也许你觉得离自己太远.那么今天我们从语句的一些优化写法及一些简单优化方法做一个介绍.这对于很多开发人员来说还是很有用的 ...
- 剑指Offer面试题:7.旋转数组的最小数字
一.题目:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2 ...
- 开始研究web,mark一下
之前想要搞引擎,经过思考之后,定位为webgl方面的引擎,这个决定早就做了,只是没有写下来 做了一些调研之后,确定使用babylon.js 和typescript 和c# 来开发 Babylo ...
- <dependency>
<dependency> <groupId>org.hibernate</groupId> ...
- jsp 分页, 判断是第一页,和最后一页.
<% //页的行数 int pagesize =20; //当前页 int currentPage = 1; try { currentPage = Integer.parseInt(reque ...
- Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?
Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办? 编码: Uri.EscapeDataString(name) 解码: ...