在 Linux 上使用 Google Maps API、DB2/Informix 和 PHP 创建地图
2008-11-18 16:34:37 来源:WEB开发网您也许注意到到了,这段代码连接到一个名为 census 的 ODBC 数据源。该系统是使用 Informix 和 unixODBC 配置的。有关如何设置系统的一个较好的教程能够在 unixODBC Web 站点上找到(请参阅 “参考资料”)。但是,这个脚本能够很容易地转换成 DB2。“Connecting PHP applications to IBM DB2 Universal Database”(developerWorks,2001 年 7 月)讨论了如何设置 DB2 与 PHP 交互。
清单 3 中的代码的输出将会返回一段格式优美的 XML 源代码,这段代码在 Zip 标记中有 Latitude 和 Longitude 标记,这些标记都在 Results 标记中。它会根据 URL 中的值搜索数据库。如果没有找到任何结果,Results 标记内就不会有 Zip 标记。您还将会在第二段 PHP 脚本中看到更具有实际作用的 Results 标记。
清单 4 是该脚本的示例输出,使用 02222(Boston,MA)作为邮政编码。
清单 4. longitude/latitude 脚本的示例输出
<?xml version="1.0"?>
<Results>
<Zip>
<Latitude>42.367797</Latitude>
<Longitude>-71.062829</Longitude>
</Zip>
</Results>
这段脚本只会被主页面的 JavaScript 调用一次。因为它以 XML 语言返回正确的标题(由 header() 函数输出),这段 XML 代码能够被内置在 Google Maps API 中的 XML 解析器所解析。(您将会在后面的 清单 6 中看到这些。)
清单 5. PHP 代码,检索关于用户屏幕中的邮政编码的数据
<?php
header("Content-Type: text/xml");
echo"<?xml version="1.0"?>";
//$newloc=$_GET[location];
//connect to db2/informix database
//connect vars
$dbname="census";
$username="informix";
$password="useyourown";
//odbc_pconnect returns 0 if the connection attempt fails
// otherwise it returns a connection ID used by other ODBC functions
// echo ( "attempt connect.....n " );
$conn = odbc_pconnect ( $dbname, $username, $password );
if ( $conn == 0 ) {
echo ( "Connection to database failed." );
//If connection failed, show what the error message was:
$sqlerror = odbc_errormsg ( $conn );
die($sqlerror);
}
$sql = "select * from census_data where longitude > '$_POST[left]'
and longitude < '$_POST[right]'
and latitude > '$_POST[bottom]'
and latitude <'$_POST[top]'";
$locResult=odbc_exec($conn,$sql);
echo "n<Results>";
while($locData=odbc_fetch_object($locResult))
{
echo "nt<Zip>";
echo "ntt<Code>$locData->zip</Code>";
echo "ntt<State>$locData->state</State>";
echo "ntt<Latitude>$locData->latitude</Latitude>";
echo "ntt<Longitude>$locData->longitude</Longitude>";
echo "ntt<Population>$locData->population</Population>";
echo "ntt<Housing>$locData->housingunits</Housing>";
echo "ntt<Area>$locData->sqmeters</Area>";
echo "nt</Zip>";
}
echo "n</Results>";
?>
更多精彩
赞助商链接