论坛首页 Java企业应用论坛

公司项目地图引擎技术解惑

浏览 36832 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-01-06   最后修改:2009-01-08

今天中午吃饭,兴趣所至和同事讨论一下公司地图引擎方面的技术实现,挑起话题的原因是我上一次31号去天河面试,当时那个应该是技术主管吧,那位仁兄问我关于我简历上的地图引擎技术的实现问题,我就回答公司主要通过jsp,xml,javascript,ajax实现,他就怀疑了,然后那时我确实没看透撤公司地图引擎的技术实现,所以无力反驳,就是因为这个原因,我和我公司的地图引擎方面的同事就讨论关于地图引擎的技术实现

主要有以下几点:

1)地图引擎技术确实是使用servlet,jsp,xml,javascript,ajax这些核心技术实现。

 

2)地图引擎的地图绘制主要是通过jdbc从数据库拿到地图图片路径,这些图片的命名方式以图片所表达的某个地方的坐标来起名,然后有8种视觉大小不同的同一地方图片(方便地图视觉收缩效果表示),然后通过servlet通过获得路径,作为流写出到客户端,这样就相对保证了数据方面的安全,因为当你通过servlet写出图片流时,然后在客户端通过img标签接收,然后根据屏幕坐标和实现数据坐标进行比例,然后通过document元素坐标排版,具体的路径是根本不知道的,你只知道当前的流是那个,所以如果有人想盗数据,就只能每次下将你服务器里的图片全部取出(当你通过直接在img标签里写路径,或者返回真实的相对路径,客户端就能知道当前图片的所在目录是那个,然后一次就能读出的在这个目录里的所有图片,通过流,你只能拿到img里当前所处理的流关于这个流的数据:地图图片,因为你在img写路径,也是到硬盘里将图片数据作为流读出来的),所以根据这个安全实现方式,其他的数据读取显示都能这么做,例如地图中的房产信息可以通过xml方式或其他的方式直接写出去客户端,这样就相对保证了数据方面的安全,但是这样做,性能方面肯定会比直接写路径或者直接在页面显示数据方式差,因为以写出流方式做,处理流方面你加多了一层,将数据转换为流这部分消耗了。由此感概,安全和性能两者犹如鱼与熊掌不可兼得也。

 

3)通过ajax在地图拖动时,可以无刷新地绘制地图,所谓的ajax无非就是请求一条url,然后返回数据,通过html的dom结构树,javascript,css,div等方面动态就表达获得数据后,需要作为改变后的效果,但是公司的ajax有经过自己的封装,而这个封装是我们公司的架构师所搞的,我那个同事和我都不是太清楚,要化些时间再研究。

 

4)地图引擎性能调优方面,首先各种数据资源可以做各种的缓存池,例如地图图片有图片缓存池,房产信息的xml数据有xml数据缓存池等等,所谓的缓存无非就是单例模式的应用技巧,而池无非就是在这个模式上增加更新,释放,发放,排队等一系列逻辑操作。其他就是通过使用Apache和tomcat服务器进行静态信息和动态信息的分开处理。

总结:到这里公司的地图引擎技术已经基本讨论完毕,如果各位看倌对此有怀疑可以提出来,我可以解释或者我可以改正

可以查看我公司的宽带城市项目查看实际效果:http://newmap.fsecity.com/

   发表时间:2009-01-06  
地图这东西关键还是要地图数据,其他的没啥东西!
0 请登录后投票
   发表时间:2009-01-06  
数据是重要,关键是实现的优雅问题
0 请登录后投票
   发表时间:2009-01-06  
其实和同事商量只不过是解决我心中的问题,得益非浅
0 请登录后投票
   发表时间:2009-01-06  
lqql 写道
地图这东西关键还是要地图数据,其他的没啥东西!

Yes,数据是核心!这玩意和别的数据不一样,不是想搞就能搞到的
0 请登录后投票
   发表时间:2009-01-07  
每层都有自己的实现目的,每种技术都有自己的位置,
0 请登录后投票
   发表时间:2009-01-07  
xiaocong1001 写道
每层都有自己的实现目的,每种技术都有自己的位置,

这位兄弟说的不是一般的抽像。。。。。。。。。。。。。。。。。。
0 请登录后投票
   发表时间:2009-01-07  
yishh 写道
lqql 写道
地图这东西关键还是要地图数据,其他的没啥东西!

Yes,数据是核心!这玩意和别的数据不一样,不是想搞就能搞到的

可以找 高德 公司 合作。。不是广告贴。。。
0 请登录后投票
   发表时间:2009-01-07  
NumberWen 写道

今天中午吃饭,兴趣所至和同事讨论一下公司地图引擎方面的技术实现,挑起话题的原因是我上一次31号去天河面试,当时那个应该是技术主管吧,那位仁兄问我关于我简历上的地图引擎技术的实现问题,我就回答公司主要通过jsp,xml,javascript,ajax实现,他就怀疑了,然后那时我确实没看透撤公司地图引擎的技术实现,所以无力反驳,就是因为这个原因,我和我公司的地图引擎方面的同事就讨论关于地图引擎的技术实现

主要有以下几点:

1)地图引擎技术确实是使用servlet,jsp,xml,javascript,ajax这些核心技术实现。

 

2)地图引擎的地图绘制主要是通过jdbc从数据库拿到地图图片路径,这些图片的命名方式以图片所表达的某个地方的坐标来起名,然后有8种视觉大小不同的同一地方图片(方便地图视觉收缩效果表示),然后通过servlet通过获得路径,作为流写出到客户端,这样就相对保证了数据方面的安全,因为当你通过servlet写出图片流时,然后在客户端通过img标签接收,然后根据屏幕坐标和实现数据坐标进行比例,然后通过document元素坐标排版,具体的路径是根本不知道的,你只知道当前的流是那个,所以如果有人想盗数据,就只能每次下将你服务器里的图片全部取出(当你通过直接在img标签里写路径,或者返回真实的相对路径,客户端就能知道当前图片的所在目录是那个,然后一次就能读出的在这个目录里的所有图片,通过流,你只能拿到img里当前所处理的流关于这个流的数据:地图图片,因为你在img写路径,也是到硬盘里将图片数据作为流读出来的),所以根据这个安全实现方式,其他的数据读取显示都能这么做,例如地图中的房产信息可以通过xml方式或其他的方式直接写出去客户端,这样就相对保证了数据方面的安全,但是这样做,性能方面肯定会比直接写路径或者直接在页面显示数据方式差,因为以写出流方式做,处理流方面你加多了一层,将数据转换为流这部分消耗了。由此感概,安全和性能两者犹如鱼与熊掌不可兼得也。

 

3)通过ajax在地图拖动时,可以无刷新地绘制地图,所谓的ajax无非就是请求一条url,然后返回数据,通过html的dom结构树,javascript,css,div等方面动态就表达获得数据后,需要作为改变后的效果,但是公司的ajax有经过自己的封装,而这个封装是我们公司的架构师所搞的,我那个同事和我都不是太清楚,要化些时间再研究。

 

4)地图引擎性能调优方面,首先各种数据资源可以做各种的缓存池,例如地图图片有图片缓存池,房产信息的xml数据有xml数据缓存池等等,所谓的缓存无非就是单例模式的应用技巧,而池无非就是在这个模式上增加更新,释放,发放,排队等一系列逻辑操作。其他就是通过使用Apache和tomcat服务器进行静态信息和动态信息的分开处理。

总结:到这里公司的地图引擎技术已经基本讨论完毕,如果各位看倌对此有怀疑可以提出来,我可以解释或者我可以改正


楼主可以把标题定义为“基于静态切割图片的客户端引擎”

1 请登录后投票
   发表时间:2009-01-08  
坦白的说,你们这个还不能称之为地图引擎。就像楼上说的,取名“基于切割图片的web地图”更合适。常见的对地图引擎的定义是arcims/mapxtreme这种基于电子地图数据实时生成地图的东西,包括你们这个东西估计也是用arc/mapinfo之类的东西循环生成静态图片的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics