Google maps api 3 通过谷歌地图显示postgis中的数据

Google maps api 3 通过谷歌地图显示postgis中的数据,google-maps-api-3,vector,kml,postgis,spatial,Google Maps Api 3,Vector,Kml,Postgis,Spatial,我正在从事一个项目,我正在使用postgres/postgis和asp.net,其中c与google maps api v3相连 我的问题是,我希望能够显示空间数据,例如:地图上db的兴趣点 是否有任何库可以将postgis转换为.kml格式?有一个为postgis的ST_AsKML函数调用的包装器,您可以尝试一下。它不是很复杂,但可以满足您的需要 SELECT as_kmldoc(osgb_location, NAME, code) FROM wunderground_stations; 您

我正在从事一个项目,我正在使用postgres/postgis和asp.net,其中c与google maps api v3相连

我的问题是,我希望能够显示空间数据,例如:地图上db的兴趣点

是否有任何库可以将postgis转换为.kml格式?

有一个为postgis的ST_AsKML函数调用的包装器,您可以尝试一下。它不是很复杂,但可以满足您的需要

SELECT as_kmldoc(osgb_location, NAME, code) FROM wunderground_stations;

您可以使用ST_AsKML,但仍然需要使用该数据创建KML字符串。下面是php中的完整函数,它从mysql数据库创建具有世界边界的kml

public function generateWorld() {

    $tolerance = 20000;

    $select = $this->_db->select()
        ->from ( array( 'w' => 'world_borders'),
                array ('cat', 'cntry_name', 'geom' => "ST_AsKML(transform(ST_SimplifyPreserveTopology(transform(w.the_geom, 2249), " . $tolerance . "),4326))"));
    $result = $this->_db->fetchAll($select);

    $countriesByCat = array();
    foreach ($result as $r) {
        if ($countriesByCat[$r['cat']] === null) $countriesByCat[$r['cat']] = array();
        array_push($countriesByCat[$r['cat']], $r);
    }

    $kml = '<?xml version="1.0" encoding="UTF-8"?>
        <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
        <Document>
            <name>borders</name>';

    for($i = 0; $i < count($countriesByCat); $i++) {
        $kml .= '<Placemark><name>'.$countriesByCat[$i][0]['cntry_name'].'</name>';
            if (count($countriesByCat[$i]) > 1) {
            $kml .= '<MultiGeometry>';
            foreach ($countriesByCat[$i] as $geom) {
                $kml .= $geom['geom'];
            }
            $kml .= '</MultiGeometry>';
        }
        else {
            $kml .= $countriesByCat[$i][0]['geom'];
        }

        $kml .= '</Placemark>';
    }

    $kml .= '</Document></kml>';

    echo $kml;
}