科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>如何开发WEB在线地图

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

基于地图的聚合应用(Mashup)随处可见。不论是您是准备计划骑车上下班还是在寻找旅馆,本文介绍如何把地图(应用)融合到应用程序里。

来源: 2006年10月11日

关键字:地图网站 HOW TO 地图搜索

基于地图的聚合应用(Mashup)随处可见。不论是您是准备计划骑车上下班还是在寻找旅馆,本文介绍如何把地图(应用)融合到应用程序里。

在以前地图被当作是专业企业解决方案的一部分,而在过去18月里,很多免费的在线地图服务不断涌现,而其中以Google最为出名,在提供用户特性和供开发人员使用的产品上,它是首推的对象。

这个G(Google)巨人并不是唯一提供地图服务的公司,尤其对于美国的用户来说——雅虎、微软和亚马逊都在参与这项竞争。在搜索街道地址这一特性上,他们都提供了类似的产品,但是只有一两家公司提供一些特别的功能,如果您正在寻找这样的功能的话。

通过其A9搜索引擎,亚马逊公司在地址搜索里为24座美国主要城市提供了它称作“街区图景(BlockView Images)”的特性。被选定地点的街道的两面会放上4张连续的照片,而且可以选择放大倍数——这能够很有效地帮助您确定预定的酒店是位于一个环境优雅的地区里还是被一圈乌烟瘴气的房子所包围。

法国的一些公司以前也做过类似的工作;他们在Pages Jaunes(黄页)网站上为9座最大城市的每条街道都提供了正面照片。

雅虎的产品现在只针对北美,目前还是用Adobe Flex编写的测试版程序,它带有标准的街道图和卫星照片,它的界面感觉要比用AJAX写成的Google Maps更加精细一些。它用起来更像是一个桌面程序而不是web应用程序,而且提供了交通状况报告图层等非常有用的特性。

Windows Live Local是微软的地图网站。它也是一个AJAX应用程序,但是在视觉上要比Google Maps更加吸引人,而且能够与Outlook和MSN Messenger集成在一起。它还有一个叫做“鸟瞰(Bird's eye)”的全新特性,它为某些选定的美国城市提供了高清晰的航空图片作为卫星图片的补充。

在本文提到的所有网站中,Windows Live Local通过IE和Firefox访问都没有问题,但是在Safari上却不行;AJAX和跨浏览器兼容性的伟大承诺还有很远的路要走。

ESRI是最大的一家地图提供商。他们有各种地图,包括街道图、地貌图。他们还在其商业产品下分出了一个免费的子类,提供给了个人和非商业用途使用。

虽然我们中的大多数人都对Sensis网站的Whereis功能所提供的位置搜寻和驾驶指南很熟悉,但是我们还有另外一个澳大利亚网站可以考虑一下——Zoomin。

Zoomin提供了完整的澳大利亚地址搜索。它还提供了一个社区,能够把地址分组,能够发起讨论,给不同的位置评分,上传图片并关联到某个位置。这些Zoomin分组可以以五花八门的方式来应用,比如一些人开发了一个聚合应用,利用另外一种服务来显示所有他们最喜欢的漫画书店。

位置,这可能就是悉尼吸引人的地方,这也就是在线地图的魅力之所在。在您的网站放一个地图的主要原因就是它能够显示您公司的位置。另外一个原因可能就是显示信息了——某个地方、对象或者事件发生的具体位置。

现在就让我们来看一些主要的在线服务吧,看看它们能够提供什么样的特性。

Google
Google Maps自然是被使用最多的地图API。它的使用是免费的,而且最近还加入了全澳大利亚的街道图。用这个API进行开发需要对JavaScript有一定的了解,因为它用Google的AjaXSLT框架编写,因此同时用到了JavaScript和XML。

如果不太肯定的话,用Google搜索一下您就会找到大量的网站,提供必要的代码,告诉您如何利用Google Maps进行地址定位,其中很多网站不仅给出了示例代码,还为您提供了生成代码的在线程序。

您需要注册申请到Google Maps API的密钥才能够使用和部署这个API;除了说明文档,Google还提供了示例代码、博客和论坛,以帮助开发人员将这个API的能力发挥到极致。

虽然在申请API密钥的时候您必须给出将要进行开发的网站,但是您仍然可以在部署之前在自己的本地系统上进行开发和测试。获得一个能够显示位置的简单地图是相当容易的,如果您利用在线的代码生成器的话这甚至会更容易。

糟糕的搜索
Google Maps目前的一个重大问题是它没有提供澳大利亚的地址搜索。驾驶指南也没有提供,没有提供的原因是很明显的,但是我不认为这个特性是开发人员当前首要解决的工作。Google准备宣布提供这两个特性的具体时间,这意味着现在您得自己动手把地址添加到地图里。

这是个至关重要的事情吗?我估计这要根据您的应用程序来决定。在地球仪上找到一个地方当然会节省大量的时间,但是事情的发展过程中,这可能不是一个很大的问题。让我们从一个初学者的角度看这个问题。Google Maps目前有澳大利亚、加拿大、日本、新西兰、美国,以及大多数西欧国家的街道图。现在就提供一个利用Google Maps提供全球街道搜索的应用程序是不可能的。

您现在能做的是在搜索界面上输入城市名、逗号(,)和澳大利亚,例如Mackay, Australia,Google Maps就会在地图中央返回这个城市的地图,现在澳大利亚的大多数城市都可以这样搜索到——很可惜郊区名字现在还无法起作用,但是搜索悉尼的地址就非常不错。

从我看到的Google Maps这个产品的那一刻起,我不相信现在没有街道搜索功能就一定会导致无法编写出应用程序来。在我为写本文而进行的研究过程中,我试过的两个聚合应用尤其让我相信这一点。

第一个是用于Flickr的地理标记(geotagging)应用程序。它利用以Google Maps为基础的界面搜索地球上的位置。我从整个世界开始,开始放大,有基本的地理知识会对此有所帮助,但是这个应用程序使用了Google Maps和叠加了街道图的卫星图,所有我没有花多长时间就找到了悉尼/郊区/街道/很多地方的地标。

BlockRocker应用程序然后就会利用Flickr上选定图像的精度和纬度为每个位置生成地理标记,再把所需要的标记加到图像上。

第二个软件是最近发布的Bikely,这是一个专门用于澳大利亚的AJAX Google Maps程序,它允许用户在地图上画出自行车的行车路线并与其他人共享。它力图使用基本的城市搜索来帮助定位行程的起点——用户,如果不成功,用前面提到的放大方法就可以了。

行程中每个主要点的位置可以通过鼠标点击来标记或者选定,您还可以很容易地给这些地点添加注释,这对于导航或者标明兴趣点很有帮助。这个应用程序很直观,非常容易使用,在地图上也很容易找到地方,像计算路线的距离这样的附加功能都非常受欢迎。

Bikely就是这种“您动手它就会来”的绝好例子。

虽然是最近才面世,它很显然已经受到了大量的自行车旅行者的追捧。在很短的时间之内,论坛上的很多志愿者都愿意伸出手来帮助扩展这个应用程序的功能。虽然创建的大多数自行车行程都是针对澳大利亚的,但是还是有一些是用于美国和加拿大的。

没有街道搜索功能对于Bikely的开发人员来说并不成问题。他们肯定对自己的产品有足够的信心,所以才会在没有提供搜索功能的情况下去发布它。我相信这是因为该网站的早期使用者所取得的成功。

他们不是那种贪大求全的人,如果这个东西很酷、很有趣或者很有用,他们就会去一试——他们也是那种如果产品足够好就会拿出来给人用的人。

如果概念足够好,放在网站上的费用可以接受,而且有人准备好不时地进行一点改进,那么您就不应该让街道搜索功能的缺失阻碍您创建一个优秀的聚合程序。

插入数据
如果您有很多希望加到地图上的地点,那么您就需要进行大量的搜索才能够找到在哪里添加这些红色的图钉。对于使用Google Maps的应用程序来说,最简单的方式是查询每个地点的经度和纬度。

问题是如何获得地图上的这些数据以便进行多次查询。上面所讲的所有地图解决方案都利用地图上的经度和纬度来定位各个地址。而Sensis和Zoomin提供的解决方案都带有搜索功能,其中Zoomin提供了一个Geocoding API。

地理编码(geocoding)是计算指定地点经度和纬度的过程,这个信息然后可以被用于像Google这样的地图服务。它还可以被用来转化一系列保存在数据库里、需要在您的应用程序显示出来的地址。

进行地理编码的一种方式是通过应用程序调用Google搜索接口,并分析返回结果里的经度和纬度。使用Web服务或者通过REST调用来取得数据将是更加理想的方式。

很多收费的Web服务都能够提供对街道地址的地理编码,其中一些服务还提供了澳大利亚的街道信息。Zoomin的服务效果很好,是一个相当理想的收费服务——您可以在它们网站的开发人员板块上看到一个正在使用的版本。我还没能发现市面上有任何免费的地理编码服务,这与Web服务或者captcha接口的情况正好相反。

其他主要服务
虽然雅虎的地图服务只能用于北美,但是它值得一提,因为它提供了多个API。有三个:Simple、AJAX和Flash。Flash可以被进一步细分为ActionScript、JavaScript和Flex三个 API。它们是唯一一个免费提供Flash API的街道地图服务。ESRI这个先前提到的商业GIS提供商也有一个Flash API,它也能用于个人和非商业用途。

雅虎还为北美的地址提供了一个免费的地理编码服务。看一看雅虎地图服务的许可证,您就会发现它有每个IP每天50,000次查询的限制,而Google Maps就没有限制。

那么微软的产品Windows Live Local又怎么样呢?有意思的是,他们提供澳大利亚街道图的时间几乎与Google Maps的相同——他们两家很显然用的是同一家的地图数据,只不过在外表上有所不同而已。

它们就像Google Maps一样,正准备加入针对澳大利亚的地址搜索功能。它们的API与Google的不同,但是我发现利用它的API编写的聚合程序都基于微软或者微软附属产品的平台。它们用于澳大利亚的卫星地图还作了最小一英里的限制。

我找到的大多数使用Windows Live Local的例子都无法与Safari浏览器兼容,事实上Windows Live Local网站本身就不行。虽然Mac的用户可能只占整个桌面计算机用户的一小部分,但是您必须认识到他们的实际比例要比最初作统计时候的高(有人说高到20%)。

另外一件关于Yahoo! Maps和Windows Live Local的事情是,这两个API的许可证事实上严禁您将它们的地图与其他竞争者提供的服务一起部署——这包括将它们与Google的Adwords放在一起部署,如果您这样做,您将无法获得本来可以得到的收入。

其他人也对Google Maps提供的澳大利亚地图数据的准确性颇有微词。只有当地图上的数据是准确无误且最新时,地图对于用户来说才是有用的。

成为Zoomin网站的一个用户是值得的,它的社区可能是孕育您创新产品的绝好方式——看看人们希望从您已经有的和感兴趣的数据里获得什么。它的地点分组、图片上传和讨论组都在投入使用,我已经注意到堪培拉的一个人已经开始经营一家漫画店的列表,所以我们可以像他一样做点什么。

我认为现在就是尽快了解和学习Google Mapping接口的好时机了。虽然Google目前没有向用户和开发人员提供用于澳大利亚的地址搜索,但是您应该认为这只是测试阶段的原因,毫无疑问它不久就会提供这一功能。这已经近到足够让您着手进行地图开发的其他方面的工作了。

大多数AJAX应用程序的接口都过于简单和雷同,作为一名经验丰富的Internet应用程序开发人员,我希望看到一个用于Google Maps的Flash API,就像雅虎提供的那样——在不久的将来,这似乎是不太可能发生的事情。也许解决的方法是对Google Maps JavaScript API进行逆向工程,这对于OSFlash来说是一项浩大的任务。

这种最近流行起来的聚合程序是在地图上钉上虚拟图钉的终极方法,但是您可以打赌的是企业开发商将在很短的时间内把它带到一个新的高度。

查看本文的国际来源

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题