【发布时间】:2014-08-13 00:36:51
【问题描述】:
我必须在地图上生成不应该在特定国家之外的随机点/标记。
对于画布,我找到了以下示例
var markerPositions = [[225,175], [75,275], [150,225], [400,125], [300,300]];
var svgNS = "http://www.w3.org/2000/svg";
var xlinkNS = "http://www.w3.org/1999/xlink";
for (var i=0; i<markerPositions.length; i++) {
// Create an SVG <use> element
var use = document.createElementNS(svgNS, "use");
// Point it at our pin marker (the circle)
use.setAttributeNS(xlinkNS, "href", "#pin");
// Set it's x and y
use.setAttribute("x", markerPositions[i][0]);
use.setAttribute("y", markerPositions[i][1]);
// Add it to the "markers" group
document.getElementById("markers").appendChild(use);
}
它添加了标记,但我必须生成随机标记并检查它不应该在形状/区域之外。
有没有办法检测随机点是否在外面?由于上面的示例具有简单的形状,但地图会有不同的角/多边形?
【问题讨论】:
-
不要硬编码您的
markerPositions值,而是随机化每个值。您可以在生成它们之后以及将它们添加到数组之前检查该点是否在某个形状内。 -
如何检查一个点是否具有特定形状?
-
实际上取决于形状。对于像矩形或圆形这样的简单形状,它只需要一些简单/复杂的数学计算。对于奇怪的不规则形状,我真的不知道。
标签: javascript jquery html canvas svg