实施地理围栏 – C#

实施地理围栏 – C#,第1张

概述我需要在C#中实现Geofence.地理围栏区域可以是圆形,矩形,多边形等.有没有人在C#中实现Geofence? 我找到了Geo Fencing – point inside/outside polygon.但是,它只支持多边形. 我测试了各种实现,这个例子适合我: Example public static bool PolyContainsPoint(List<Point> points, 我需要在C#中实现Geofence.地理围栏区域可以是圆形,矩形,多边形等.有没有人在C#中实现Geofence?

我找到了Geo Fencing – point inside/outside polygon.但是,它只支持多边形.

解决方法 我测试了各种实现,这个例子适合我:

Example

public static bool polyContainsPoint(List<Point> points,Point p) {    bool insIDe = false;    // An imaginary closing segment is implIEd,// so begin testing with that.    Point v1 = points[points.Count - 1];    foreach (Point v0 in points)    {        double d1 = (p.Y - v0.Y) * (v1.X - v0.X);        double d2 = (p.X - v0.X) * (v1.Y - v0.Y);        if (p.Y < v1.Y)        {            // V1 below ray            if (v0.Y <= p.Y)            {                // V0 on or above ray                // Perform intersection test                if (d1 > d2)                {                    insIDe = !insIDe; // Toggle state                }            }        }        else if (p.Y < v0.Y)        {            // V1 is on or above ray,V0 is below ray            // Perform intersection test            if (d1 < d2)            {                insIDe = !insIDe; // Toggle state            }        }        v1 = v0; //Store prevIoUs endpoint as next startpoint    }    return insIDe; }
总结

以上是内存溢出为你收集整理的实施地理围栏 – C#全部内容,希望文章能够帮你解决实施地理围栏 – C#所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存