【发布时间】:2014-09-23 22:46:56
【问题描述】:
我正在尝试在 Google 地图上渲染形状(使用 API 的 V3),其中包含相同的形状,只是内部更小。基本上是盒子中的盒子或多边形中的多边形。
对于矩形,我有以下代码,它有效:
var drawEdgesRectangle = function (shape) {
// shape is the original, parent rectangle
var NE, SW, childNE, childSW, padding, diagonal, inner;
// set padding constant to 1 (i.e. 1m distance all around)
padding = 1;
// get diagonal distance from corner
diagonal = Math.sqrt(2) * padding;
// get NE of parent
NE = shape.bounds.getNorthEast();
// get SW of parent
SW = shape.bounds.getSouthWest();
// get child NE, SW
childNE = google.maps.geometry.spherical.computeOffset(NE, diagonal, 225);
childSW = google.maps.geometry.spherical.computeOffset(SW, diagonal, 45);
// render inner shape
inner = new google.maps.Rectangle({
strokeColor: 'white',
strokeOpacity: 0.8,
strokeWeight: 1,
fillColor: 'black',
fillOpacity: 0.35,
map: map,
bounds: new google.maps.LatLngBounds(
childSW,
childNE
)
});
}
当然,对多边形执行此操作是另一回事。我知道我可以使用getPaths() 来获取每条线的属性,但是弄清楚如何放置内部线,实际上,确定“内部”的位置对我来说在概念上是相当困难的。
我想知道使用 Google API 是否可以实现我想要实现的目标。
【问题讨论】:
-
您需要在多复杂的多边形上执行此操作?他们是任意的吗?
-
理想情况下,我愿意接受任何类型的多边形。实际上问题不太可能超过 10 行。
-
线/顶点的数量并不是复杂性的真正衡量标准。可以有凹边吗?多边形的中心是否在多边形内?如果是这样(并且没有凹边),您应该能够做类似于您对矩形所做的事情。
标签: javascript google-maps google-maps-api-3