java ,如何判断一个地理坐标是否在一个以多边形的顶点组成的地理围栏里?

发布于 2022-09-12 00:36:58 字数 149 浏览 28 评论 0

使用了JavaScript百度地图通过顶点坐标绘制多边形,将多边形的顶点坐标以数组的形式存储到数据库里。

如何使用java判断一个地理坐标是否在一个以多边形的顶点坐标组成的地理围栏里?通过百度地图api的话要怎么做呢,另外还有没有不借助百度地图api的方法进行判断?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏别ゝ 2022-09-19 00:36:58

不知道百度API有没有这个判断,自己做的话,这是个极好的问题,可以采取的一个方法就是,从这个点『往右水平出发』判断经过了多少条『多边形的边』:
Demonstrating how the ray cuts through a polygon
如果是奇数条边,则这个点在多边形内,如果是偶数条,则在多边形外。
C的代码如下:

int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i < nvert; j = i++) {
    if ( ((verty[i]>testy) != (verty[j]>testy)) &&
     (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
       c = !c;
  }
  return c;
}

nvert是点数, vertxverty是各边的坐标,testxtesty是需要判断的点坐标,可以自己试着改成JavaScript。
具体还可以参考这边文章PNPOLY - Point Inclusion in Polygon Test,希望能帮助到你。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文