科技行者

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

知识库

知识库 安全导航

至顶网网络频道如何开发WEB在线地图

如何开发WEB在线地图

  • 扫一扫
    分享文章到微信

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

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

作者:Builderau.com.au 2006年10月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

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接口的情况正好相反。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

    重磅专题
    往期文章
    最新文章