这是一个GIS问题。谷歌地图API是不是一个真正的全面的GIS。如果你想要一个。开源的解决方案,我建议加载你的黄色和绿色的多边形到PostGIS的数据库,然后你就可以查询数据库
举个例子,你可以编码所绘制的多边形作为具有格式的多边形对象:
POLYGON((lon lat, lon lat, lon lat, lon lat, ... lon lat))
然后发送给从像JavaScript的PHP文件(你会在$.get()
命令或类似的包装这并返回JSON结果:
getParcels.php?bounds=POLYGON((lon lat, lon lat, lon lat, lon lat, ... lon lat))
在PHP文件,查询PostGIS的数据库,并返回的ID黄色和绿色的多边形:
<?php
$pgcon = pg_connect ("dbname=gis user=gisuser connect_timeout=5") or die ('Can not connect to PG server');
if (!$pgcon) {
echo "No connection to GIS database.\n";
}
$bounds = urldecode($_GET["bounds"];
$ewkt = 'SRID=4326;' . $bounds);
$json = ''; // this will contain your output
// Here I am returning the polygon geometry and the parcelID...
$query .= <<<EOD
SELECT
ST_AsGeoJSON(the_geom) as geom,
parid
FROM
parcels
WHERE
ST_Intersects(the_geom, ST_GeomFromEWKT($1));
EOD;
$result = pg_query_params($pgcon, $query, array($ewkt));
if($result) {
$json = '{"type":"FeatureCollection", "features":[';
while($row = pg_fetch_assoc($result)) {
$json .= '{"geometry":' . $row['geom'] . ',';
$json .= '"type":"Feature","properties":{"parid":"' . $row['parid'] . '"}},';
}
$json = substr($json, 0,-1).']}';
}
echo $json;
?>
这将返回交叉使用的PostGIS的ST_Intersects
命令你的多边形包裹。