检测多边形中是否包含Bing Map AJAX点

时间:2014-06-24 20:33:44

标签: javascript bing-maps

几天前,我做了一个C#函数,检测多边形内部是否有一个点。经过一些弊端,我终于完成了这个功能。但在第一次使用后,我发现这种方法非常慢。从javascript调用函数后面的C#代码非常麻烦,因为javascript继续执行代码,而不是等待C#代码的结果。

下面,我发布了解决方案。

1 个答案:

答案 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 }); };