Php 谷歌地图API V3-->;如何显示MYSQL表中存储的所有多边形?
我对谷歌地图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划分为单独的列,
创建表(如果不存在)`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;
}