几天前,我做了一个C#函数,检测多边形内部是否有一个点。经过一些弊端,我终于完成了这个功能。但在第一次使用后,我发现这种方法非常慢。从javascript调用函数后面的C#代码非常麻烦,因为javascript继续执行代码,而不是等待C#代码的结果。
下面,我发布了解决方案。
答案 0 :(得分:6)
我被迫构建一个新函数,这次是用普通的javascript。浏览片刻后,我发现了一些示例(使用Google地图功能)和Microsoft网站(http://msdn.microsoft.com/en-us/library/cc451895.aspx中的另一个示例),但MS网站中包含的功能始终返回false。然后,使用Stackoverflow中发布的代码作为参考,现在我有一个有效的javascript函数,适用于Bing映射AJAX v7。我希望对其他人有用。不要忘记标记为有用!
loc = pushPin.getLocation();
var isInside = false;
var j = 0;
var x = loc.longitude;
var y = loc.latitude;
var paths = polygon.getLocations();
for (var i = 0; i < paths.length ; i++) {
j++;
if (j == paths.length) { j = 0; }
if (((paths[i].latitude < y) && (paths[j].latitude >= y))
|| ((paths[j].latitude < y) && (paths[i].latitude >= y))) {
if (paths[i].longitude + (y - paths[i].latitude)
/ (paths[j].latitude - paths[i].latitude)
* (paths[j].longitude - paths[i].longitude) < x) {
isInside = !isInside
}
}
}
if (isInside == true) { pushPin.setOptions({ visible: true }); };