【发布时间】:2013-07-26 02:12:08
【问题描述】:
我在http://www.choptankelectric.com/outages/google/cec_create_xml.html 有一个页面,其中有几个多边形,其中一些包含“甜甜圈”孔,这些孔应该是透明的,但显示为灰色。
坐标来自一个 XML 文件,应该看起来像 http://www.choptankelectric.com/outages/index.html,它使用了一个非常庞大的包含文件并且不优雅。 XML 是根据保存在 mySQL DB 表中的坐标生成的。每个多边形都有一个 polygonID 和(在内部多边形的情况下)一个显示包含它的父外部多边形的字段。
如何让它显示透明的甜甜圈孔?
代码如下:
var phpscript = "cec_create_xml.php"; // creates xml data for polygons
downloadUrl(phpscript, function(data) {
var polygons = data.documentElement.getElementsByTagName("polygon");
for (var a = 0; a < polygons.length; a++) {
//for (var a = 0; a < 1; a++) {
var Parent = polygons[a].getAttribute("Parent");
var strokeColor = polygons[a].getAttribute("strokeColor");
var strokeOpacity = polygons[a].getAttribute("strokeOpacity");
var strokeWeight = polygons[a].getAttribute("strokeWeight");
var fillColor = polygons[a].getAttribute("fillColor");
var fillOpacity = polygons[a].getAttribute("fillOpacity");
var pts = [[]];
var points = polygons[a].getElementsByTagName("point");
for (var i = 0; i < points.length; i++) {
pts[i] = new google.maps.LatLng(parseFloat(points[i].getAttribute("lat")),
parseFloat(points[i].getAttribute("lng")));
}
var polyOptions = {
paths: pts,
strokeColor: strokeColor,
strokeOpacity: strokeOpacity,
strokeWeight: strokeWeight,
fillColor: fillColor,
fillOpacity: fillOpacity
}
varCECarea = new google.maps.Polygon(polyOptions);
CECarea.bindTo('map',map,'polymap');
}
});
【问题讨论】:
-
Can I force Google Maps to draw polygons with overlapping paths as a union rather than intersection? 的可能重复项(使内部“洞”路径与外部路径的方向相反)。
-
我尝试反转内部多边形的路径,但结果相同。在choptankelectric.com/outages/index.html 地图(正确显示)上,内部多边形数组包含在外部多边形数组中,但我不知道足够的 JS 能够在上面的代码中重现它。
标签: xml google-maps polygon