从某种程度来说google earth客户端是我们时期的技术标志之一。google earth并非是第一个地球浏览客户端,而且与它的先驱、不为人知的keyhole非常相似。但是凭着google的大名以及基础版对最终用户免费,它完成了市场渗透并得到公认――这是另一个值得大书特书的有趣话题。
本文只有一个基本使命:即向你展示在servlet和google earth客户端之间发送和接收信息是多么的容易。有了这种程度的交互,你就能用基本的java编程技能创建设想的服务。
使用许可及竞争者
截至本文发稿时google earth还处于beta阶段(版本号3.0.0616),许可证是商业的(见客户端的帮助部分)。如果你想寻求等价的开源范例,我建议你去关注优秀的nasa world wind(nasa世界风)项目
基础知识
google earth客户端以第二版的锁位标记语言(kml)解析xml数据,它有一个专用的命名空间。庞大的kml配置信息可能会影响到gui显示,开发这种需要平衡利弊的应用的难点在于需要了解更多的kml细节而不是编程技巧。kml实体的简要列表包括:
*placements(位置),标明在地球上的坐标
*folders(夹子),帮助组织其它的特征信息
*documents(文档),存放可能包含风格元素的folder的容器
*image overlays(图片叠加),用来添加图片
.network links(网络链接),描述在何处以及如何与服务器或者servlet(本文采用的方式)连接
本文为了简化的目的,主要探讨了folder、placement.network-link元素的使用;此外还用folder定义了一段旅程(tour),它里面包含了一系列的placement。
在windows上安装了google earth后,文件扩展名kml和mime(multipurpose inte.net mail extensions,多用途网络邮件扩展)类型“application/keyhole”即被注册。这意味着只要点击kml文件或通过tcp/ip接收“application/keyhole”mime类型的文件就会激活google earth客户端。
如果返回的kml文本为:
<folder><name>hello world [127.0.0.1] </name></folder>
则程序将显示如下内容:
图1 hello world folder的gui显示
要想激活earth客户端,只需浏览适当的url地址--就好比从资源地址(http://localhost:8080/tour/hello)下载helloservlet源程序。这样就能激活doget()方法,然后重定向到dopost()方法,在所有的web浏览器里都会看到以下结果:
| protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { dopost(request, response); } protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype("application/keyhole"); printwriter out = response.getwriter(); string message ="<folder><name>hello world [" + request.getremoteaddr()+ "]</name></folder>"; out.println(message); } |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器