WebGIS简单实现一个区域炫酷的3D立体地图效果

1.别人的效果

        作为一个GIS专业的,做一个高大上的GIS系统一直是我的梦想,虽然至今为止还没有做出一个理想中的系统,但是偶尔看看别人做的,学习下别人的技术还是很有必要的。眼睛是最容易误导我们的,有时候看着炫酷的效果,可能只是因为一点视觉误差,本文用一个别人的系统界面来解析如何实现一个小区域的立体地图效果。


          图片来源:http://www.popodv.com/ui.html#&gid=1&pid=39

        上图就是别人的系统,吸引我的不止是浓浓科技感的布局配色,还有那中间凸起的带立体效果的影像图区域。

 

2.技术分析

        作为一个GIS专业毕业的,又从事GIS开发7年的老鸟,我试着来想想如何实现中间地图的立体区域效果。

        想法1:

        立体效果可以看做一个阴影,css3中有一个box-shadow属性可以试试。这个是前端的常规做法,但是如果放到GIS地图可能就比较困难了,毕竟地图数据是放到地图插件里面来呈现的(当然也可以自己写个地图插件,有这个能力请忽略本文章,大神走好),如果使用现有主流的ArcGIS JS、OL3、leaflet或者百度、高德、谷歌的API,估计都没有提供直接阴影渲染的接口,更何况只是其中的一个区域呢。放弃

        想法2:

        图片覆盖层,记得当年弄百度地图API的时候,有一个图层叫overlay的,可以将图片的4个角固定到地图的4个点,然后图片就可以跟随地图的缩放移动。我想可以直接弄一张图片做成立体效果放到地图上面。当然这样可以实现上图的效果,但是脱离了GIS地图的意义,因为图片的话就不具备地图数据的浏览和后期的开发了,仅仅作为一个展示系统意义不大。失败

        

        于是我把这个图发到了几个朋友的群里(都是做技术的),一个朋友提点了我,膜拜!!!

 

        该朋友是他们公司GIS专员,负责他厂关于GIS的一切技术。不由感叹,同九义汝河秀!

 

        于是简单的分析了下,这样的立体效果实现可以用自发布地图服务来实现,其中涉及到4个图层:

        图层1:底图

        图层2:带条纹渲染填充的区域边界,向南偏移10(随便写的,做一个假设和比较)

        图层3:带条纹渲染填充的区域边界,向南偏移8(随便写的,做一个假设和比较)

        图层4:图层2、3区域的影像图,不偏移

 

 

3.写在最后

        以上技术分析仅为个人拙见,如果有更好的实现方法,请不吝赐教。

  

  查看更多GIS、WPF、JAVA、前端技术分享,请访问我的个人技术网站,查看更多技术分享。网站地址:www.88gis.cn

转载于:https://www.cnblogs.com/tracyjfly/p/9722153.html

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/* *author:XudongChen *Date:2010-03-09 *QQ:233828249 81023617(不才) *Email:[email protected] */ 2009-8-13 1.加载分块地图 2.添加全景标记窗体 2009-8-14 1.增加控制条 2.增加全景标记、公交车标记显示层 3.解决地图定位问题 4.增加经纬度层功能 5.未修正图标层的定位 2009-8-15 1.已修正8.14地图定位错误,还存在放大缩小时定位不准 2.存在ie内存泄漏问题 2009-8-16 1.已修正8.15 ie内存泄漏问题,chrome下可能还存在内存泄漏 2.增加图标定位功能 3.增加鼠标滚轮事件(http://yongzhi.blog.hexun.com/5057947_d.html) 4.通过jquery加载json数据文件(图标显示层数据) 2009-8-17 1.增加建筑物高亮显示(还需完成鼠标mouseover和mouseout事件) 2009-8-18 1.完成建筑物高亮显示,有点小bug 2009-8-19 1.增加记录原始缩放比例的全局变量 2.解决建筑物高亮显示bug 2009-8-20 1.增加三维全景展示功能 2.浏览建筑详细功能 2009-8-21 1.引入jqueryAlert插件,美化弹出窗体 2009-8-23 1.增加搜索功能 2.清理建筑信息显示页和公交信息页多余数据 2009-10-22 1.增加小沙盘拖动类(鹰眼视图) BirdEye.js 完成小沙盘到地图的同步,同步方法:检测mouseup事件触发->修改url->request->计算坐标->同步行为 2.增加小沙盘样式表BirdEye.css 地图图片路径birdeyemap 3.完成window.parent地图->小沙盘的同步 问题:小沙盘->window.parent地图存在bug,可以尝试开启 2009-10-23 1.在小沙盘中增加浮动绿色框 2009-11-6 1.实现“鹰眼地图”不需移动,一幅可以看到见全景, 当主场景移动时,“鹰眼地图”只有小框在移动。 同时“小框” 主场景也在移动。 2009-12-17 1.测距功能事件配置 2009-12-21 1.完成测距功能 2009-12-22 1.配置搜索功能,后台改用s2sh框架 2.完成hessian+spring+hibernate整合,提供建筑信息和公司信息hessian查找服务 2009-12-23 1.配置hessian服务端缓存 2.配置hessian日志记录,输出到文件/log/wzucxd/html 3.完成建筑信息显示页,配置2级缓存 4.配置oscache 5.配置新闻信息模块 2010-1-13 1.完成chrome和ff下的搜索功能 2.搜索功能支持ie6.0+ //设置Theodolite$setPoint var cpointtmp = new CPoint(this.holder.offsetLeft + evt.clientX - this.mvl.offsetLeft, this.mvl.offsetTop + evt.clientY - this.mvl.offsetTop); Theodolite$setPoint(cpointtmp);
一个webgis项目的完整开发包括以下几个主要步骤: 1.需求分析和规划:首先,我们需要明确项目的目标和需求。这包括确定项目的功能和特性、地图数据的来源、用户界面设计等。在此阶段,我们还需要进行基本的规划,确定项目的时间表、资源需求和预算等。 2.地图数据准备:在项目开始之前,我们需要准备好地图数据。这可能涉及到收集、整理和处理地理数据,例如卫星影像、地图矢量数据等。同时,我们还需要确定数据的存储方式,例如使用数据库管理系统来存储和查询地理数据。 3.系统设计和开发:在此阶段,我们根据需求分析的结果进行系统设计和开发。这包括数据库设计、系统架构设计和前端界面设计等。同时,我们还需要编写代码来实现系统的功能,并进行测试和调试。 4.地图功能开发:在系统开发的基础上,我们需要实现地图相关的功能,例如地图的展示、缩放、拖动、测量等。为了实现这些功能,我们可能需要使用地图开发框架或库,例如OpenLayers或Leaflet等。 5.数据可视化和分析:除了基本的地图功能,我们还可以通过数据可视化和分析来提供更丰富的功能。例如,我们可以根据地理数据来生成统计图表,或者使用空间分析算法来进行路径规划或区域分析等。 6.用户测试和反馈收集:在开发的过程中,我们需要进行用户测试,以确保系统的功能和性能符合用户的需求。通过用户反馈,我们可以进一步完善系统并解决可能存在的问题。 7.部署和维护:一旦开发完成并通过测试,我们需要将系统部署到服务器上,使用户可以通过浏览器进行访问。在部署后,我们还需要进行系统的维护和更新,以保证系统的稳定性和功能性。 总之,一个webgis项目的完整开发涉及到需求分析、地图数据准备、系统设计和开发、地图功能开发、数据可视化和分析、用户测试和反馈收集以及部署和维护等多个方面。每个阶段都需要仔细规划和执行,以确保项目的顺利进行和最终交付高质量的系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值