|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
主要缺点就是:速度比较慢,没有C和C++快
自本系列的第一篇文章入手下手,我就一向在构建一个trip-planner使用程序。今朝基础的模子-视图-把持器(Model-View-Controller,MVC)框架已筹办停当,我将到场一些内部手艺,详细来说,我将到场舆图功效。固然我能够暗示“我的路程是从丹佛到罗利,路过圣何塞和西雅图”,但舆图将能更好地形貌旅途线路。您大概晓得西雅图和罗利是在美国的两头,但舆图可以匡助您显现出两个乡村之间的距离。
这个使用程序有甚么用?本文的开端为您供应一个大致的先容。请会见http://maps.google.com并在搜刮框内输出IATA代码DEN。将呈现丹佛国际机场(DenverInternationalAirport),如所示(更多的IATA代码,拜见上个月的文章)。
.丹佛机场(由GoogleMap友谊供应)
除能显现您在HTML表创立的美国机场之外,tripplanner还将在舆图上把机场刻画出来。在本文中,我将利用收费的GoogleMapsAPI。我还可使用收费的Yahoo!MapsAPI,等等(拜见参考材料)。一旦懂得在线Web舆图绘制的基础道理以后,您将发明分歧的API之间可以公道地交换。在会商该办理计划的舆图绘制部分之前,您必要懂得怎样将一个复杂的三个字母的字符串(如DEN)转换为舆图上的一点。
地舆编码
当向GoogleMap输出DEN时,这个使用程序在幕落后行了一些转换。您大概用街道地点(如123MainStreet)的体例设想地舆地位,但GoogleMap必要一个纬度/经度点,以便在舆图上把它显现出来。这其实不必要您本人想法供应纬度/经度点,使用程序会替您把人类可以辨认的地点转换为纬度/经度点。这一转换历程称为地舆编码(拜见参考材料)。
扫瞄Web时,也会产生一个相似的转换。从手艺角度来讲,接洽远程Web服务器的唯一体例是供应服务器的IP地点。侥幸的是,您不必要本人输出IP地点。只需将友爱的URL输出到Web扫瞄器,它将挪用域名体系(DNS)服务器。DNS服务器会将URL转换为对应的IP地点,然后扫瞄器与远程服务器创建HTTP毗连。一切这些对用户而言都是通明的。DNS使Web的利用简单了良多。一样,地舆编码器也使基于Web的舆图绘制使用程序加倍简单利用。
在Web上疾速搜刮收费地舆编码器会发生很多切合tripplanner地舆编码需求的了局。Google和Yahoo!都供应地舆编码服务,并把它作为API的尺度部分,但针对这个使用程序,我将利用由geonames.org(拜见参考材料)供应的收费地舆编码服务。它的RESTfulAPI同意我指明我供应的是IATA代码,而不是通用的文本搜刮术语。好比,ORD并非指内布拉斯加州Ord.市的住民,ORD指的是ChicagoOHareInternationalAirport。
在Web扫瞄器中输出URLhttp://ws.geonames.org/search?name_equals=den&fcode=airp&style=full。您将看到XML呼应,如清单1所示:
清单1.来自地舆编码哀求的XML了局
<geonamesstyle="FULL">
<totalResultsCount>1</totalResultsCount>
<geoname>
<name>DenverInternationalAirport</name>
<lat>39.8583188</lat>
<lng>-104.6674674</lng>
<geonameId>5419401</geonameId>
<countryCode>US</countryCode>
<countryName>UnitedStates</countryName>
<fcl>S</fcl>
<fcode>AIRP</fcode>
<fclName>spot,building,farm</fclName>
<fcodeName>airport</fcodeName>
<population/>
<alternateNames>DEN,KDEN</alternateNames>
<elevation>1655</elevation>
<continentCode>NA</continentCode>
<adminCode1>CO</adminCode1>
<adminName1>Colorado</adminName1>
<adminCode2>031</adminCode2>
<adminName2>DenverCounty</adminName2>
<alternateNamelang="iata">DEN</alternateName>
<alternateNamelang="icao">KDEN</alternateName>
<timezonedstOffset="-6.0"gmtOffset="-7.0">America/Denver</timezone>
</geoname>
</geonames>
您在URL中输出的name_equals参数是该机场的IATA代码。这只是在每一个查询中必要变动的URL的一部分。fcode=airp标明您正在搜刮的特性代码是一个机场。style参数—short、medium、long或full—指定了XML呼应的具体水平。
如今已筹办好地舆编码器,下一步就是将它与Grails使用程序集成在一同。为此,您必要一个服务。
<p>
在性能方面,在windows平台下,.net可能是占强项,要是把.net放在sun开发的操作系统上去运行呢?根本就运行不了,.net对其它操作系统的支持也很弱,性能也可能比不上java。 |
|