Php 谷歌地图API V3-->;如何显示MYSQL表中存储的所有多边形?

Php 谷歌地图API V3-->;如何显示MYSQL表中存储的所有多边形?,php,javascript,mysql,google-maps-api-3,Php,Javascript,Mysql,Google Maps Api 3,我对谷歌地图API V3非常陌生,我想得到一些帮助。 我在我的网站上画多边形,效果很好。我将多边形的坐标保存在MYSQL数据库中,下面是表的结构: 创建表(如果不存在)`localite`( `id_localite`int(11)非空自动增量, `libele_localite`varchar(255)不为空, `lat_localite`文本不为空, `long_localite`文本不为空, 主键(`id\u localite`) ) 正如您所见,我已经将lat和long划分为单独的列,

我对谷歌地图API V3非常陌生,我想得到一些帮助。 我在我的网站上画多边形,效果很好。我将多边形的坐标保存在MYSQL数据库中,下面是表的结构:

创建表(如果不存在)`localite`(
`id_localite`int(11)非空自动增量,
`libele_localite`varchar(255)不为空,
`lat_localite`文本不为空,
`long_localite`文本不为空,
主键(`id\u localite`)
)
正如您所见,我已经将lat和long划分为单独的列,并使用PHP获取坐标

lat_localite列只包含纬度坐标,long_localite列只包含经度坐标,我通过使用Javascript并在两个单独的文本区域中写入内容来获得该坐标。。代码如下:

google.maps.event.addListener(drawingManager,'polygoncomplete',函数(polygon){
var patths=polygon.getPath();
var stuh=patths.getLength();
var lat_localite='';
var long_localite='';

对于(var i=0;i和V3,这非常容易

var polygons = [];
然后用下面的代码循环遍历数据库中的所有普立万

  //Add all your coordinates in with new google.maps.LatLng(lat, lng),
  var coords = [
    new google.maps.LatLng(12.5, -8.2),
    new google.maps.LatLng(12.52, -8.21),
    etc....
  ];

  // Construct the polygon
  polygons.push(new google.maps.Polygon({
    paths: coords,
    other_options: etc....
  }));

  polygons[polygons.length-1].setMap(map); //Your map object
其次(出于兴趣),MySql可以使用空间数据类型存储多边形(请看)

如果您需要查询数据,这会有所帮助。您将被重新划分为最小边界矩形,但我认为这种数据类型更适合您

要从MySql中提取多边形作为lat/lng坐标,请查看MySql的AsText()函数

例如:

然后通过这个php函数传递:

function sql_to_coordinates($blob)
    {
        $blob = str_replace("))", "", str_replace("POLYGON((", "", $blob));
        $coords = explode(",", $blob);
        $coordinates = array();
        foreach($coords as $coord)
        {
            $coord_split = explode(" ", $coord);
            $coordinates[]=array("lat"=>$coord_split[0], "lng"=>$coord_split[1]);
        }
        return $coordinates;
    }

您的意思是要显示与构成所有多边形的点相关联的数值?还是要在检索数据后在地图上重新绘制多边形?
function sql_to_coordinates($blob)
    {
        $blob = str_replace("))", "", str_replace("POLYGON((", "", $blob));
        $coords = explode(",", $blob);
        $coordinates = array();
        foreach($coords as $coord)
        {
            $coord_split = explode(" ", $coord);
            $coordinates[]=array("lat"=>$coord_split[0], "lng"=>$coord_split[1]);
        }
        return $coordinates;
    }