4

我是 google MAPS API V3 的新手,我想获得一些帮助。我在我的网站上绘制多边形,效果很好。我将多边形的坐标保存在 MYSQL 数据库中,这是表的结构:

CREATE TABLE IF NOT EXISTS `localite` (
  `id_localite` int(11) NOT NULL AUTO_INCREMENT,
  `libele_localite` varchar(255) NOT NULL,
  `lat_localite` text NOT NULL,
  `long_localite` text NOT NULL,
  PRIMARY KEY (`id_localite`)
)

如您所见,我已将 lats 和 longs 划分为单独的列,并使用 PHP 获取坐标。

lat_localite 列仅包含纬度坐标,而 long_localite 列仅包含经度坐标,我通过使用 Javascript 并在 2 个单独的文本区域中编写内容来获取此坐标。这是代码:

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(polygon) {
  var patths = polygon.getPath();
  var stuh = patths.getLength();
    var lat_localite='';
    var long_localite='';
        for (var i=0; i<(stuh) ;i++)
        {
        lat_localite  += (patths.getAt(i).lat()+'\n');
        long_localite += (patths.getAt(i).lng()+'\n');

        document.forms['formId'].elements['Textarea1ID'].value=lat_localite;
        document.forms['formId'].elements['Textarea2ID'].value=long_localite;

        }   
});

所以现在我想显示存储在我的表格中的所有多边形,我不知道该怎么做你能帮帮我吗?

4

1 回答 1

3

使用 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() 函数。

例如:

select AsText(my_polygon_column) as blob;

然后通过这个 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;
    }
于 2012-06-07T21:54:52.473 回答