在 Linux 上使用 Google Maps API、DB2/Informix 和 PHP 创建地图
2008-11-18 16:34:37 来源:WEB开发网这段脚本返回的 XML 代码大致上基于第一个脚本 —— 它会有个根标记 Results,就像您在第一个脚本中看到的一样。但是这段脚本通常会返回多个 Zip 标记。对于由该数据源返回的每行数据,while 循环将会在该行做为一个对象被调用,并且输出一个所有数据都在数据库中的 Zip 标记(请参阅 清单 1)。
这段代码最重要的部分就是 SQL 查询 —— 在 清单 6中,Ajax 将会切换为 POST,而不是 GET(正如在 清单 3 中看到的),并且传送 4 个变量:left、right、bottom 和 top。这些变量以经度/纬度定义为地图可见部分的边界。通过查询数据库,并请求这些精确边界内的邮政编码,您就可以避免使用不必要的带宽,降低服务器的负荷,且也有助于缩短响应时间。
清单 6 中的代码由三个部分组成:
CSS
<div> 标记
JavaScript 和很少的 PHP 代码
第一部分是一个嵌入在 <head> 标记中的级联样式表(css)。其边界由 <style type="text/css"> 和 </style> 标记定义。css 定义了将会在 <div> 标记中使用的类,以创建页面的外观。如果没有 css,页面中就不会有颜色,页面的布局看起来就会很松散,页面的组织也很不美观。
主体标记中的下一部分是:构造块 <div> 标记,它用于容纳布局、信息和搜索工具。由于 JavaScript 的工作方式,<div> 标记对于容易更新的页面来说工作得非常好。
最后一部分是最重要的:JavaScript。正如上文所提到的,JavaScript 中包含很少的几个部分:
搜索方法
控制 LOADING.. 符号的方法
解析 XML 并将标记加入地图中的方法
几个创建图标的 PHP for 循环
当搜索按钮被按下或表单被提交时触发的方法
除了所有这些之外,具有最重要功能的方法就是用来解析 XML 的方法。它们创建一个新的 GXmlHttp.create(); 函数,该函数是一个内置在 Google Maps API 中的 HttpRequest 类。这不仅仅是用于更新地图的控制中心,也是大多数 Ajax 应用程序的控制中心。(但是,并非所有的 Ajax 应用程序都使用 Google Maps HttpRequest 类。)
当该请求发送到 PHP 文件,并且收到 XML 之后,代码就会搜寻并寻找所有的 Zip 标记。当找到一个结果,程序就会将一个标记添加到地图里面。程序也必须添加一个事件监听器来处理事件 —— 在本例中是某人单击标记。与 HttpRequest 一样,这个事件监听器函数也内置在 Google Maps API 中。
地图的另一个重要部分是用于监听地图移动的所有方法完成之后初始化的事件监听器。它会查看缩放级别,判断级别是否超过或低于 6 级(为了避免太多的带宽和太慢的响应时间),然后将更新地图和侧栏,或者是告诉用户他/她已经缩小得太多了。
结束语
地理数据显示的可能性只受您的想像力限制。本文的示例基于 US Census 数据。这里展示的架构和方法能够应用于您所选择的任何数据。我们希望您能够发觉本文对您很有用,也希望您愿意根据自己创建 mashups 的经验提出反馈意见。
更多精彩
赞助商链接