我是谷歌地图应用编程接口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`)
)如您所见,我已经将经纬度划分为不同的列,并使用PHP获得坐标。
lat_localite列仅包含纬度坐标,long_localite列仅包含经度坐标,我通过使用Javascript并将内容写入两个独立的文本区域来获得此坐标。代码如下:
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;
}
});所以现在我想要显示存储在我的表中的所有多边形,我不知道怎么做,你能帮我吗?
发布于 2012-06-08 05:54:52
有了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可以使用空间数据类型存储多边形(请看Polygon data type)
如果您需要查询数据,这会很有帮助。您被重新定义为最小边界矩形,但我认为这种数据类型更适合于。
要从MySql中提取多边形作为经纬度/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;
}https://stackoverflow.com/questions/10465927
复制相似问题