Google MAPS API V3 --> 如何显示存储在我的 MYSQL 表中的所有多边形?
Posted
技术标签:
【中文标题】Google MAPS API V3 --> 如何显示存储在我的 MYSQL 表中的所有多边形?【英文标题】:Google MAPS API V3 --> How to display all the Polygons that are stored in my MYSQL table? 【发布时间】:2012-05-15 00:10:36 【问题描述】:我是 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 个单独的 textareas .. 这是代码:
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;
);
所以现在我想显示存储在我的表格中的所有多边形,但我不知道该怎么做你能帮帮我吗?
【问题讨论】:
您的意思是要显示与构成所有多边形的点相关的数值吗?或者,您想在检索数据后在地图上重新绘制多边形? 【参考方案1】:使用 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 中提取多边形作为 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;
【讨论】:
以上是关于Google MAPS API V3 --> 如何显示存储在我的 MYSQL 表中的所有多边形?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在Google Maps API v3上编写自定义文字?
Google Maps API V3:奇怪的 UI 显示故障(附截图)
如何更改 Google Maps API V3 中的图标颜色?