当前位置: 首页 > 面试题库 >

在Android中测试多边形内的点

夏宪
2023-03-14
问题内容

前几天,我在Java中上了一堂课,以计算a point(X,Y)是否在多边形内。(XYdouble,因为将是地理坐标)。

我知道Java具有该类Polygon,但是我必须使用Path2Dand
Point2D,因为Polygon不允许使用double,只能是整数:(

一旦在中完成多边形Path2D,就使用了方法containsPath2D有了它),问题就解决了。

但是现在,我想导入到Android,问题就在这里,因为Path2D需要导入:

import java.awt.geom.Path2D;
import java.awt.geom.Point2D;

并且在Android中不存在awt,因此无法使用。

那么,是否有任何类似于Path2Dhad contains方法的类?还是我必须自己计算?

这是我在Java中使用的方式Path2D

private void ConstructPolygon(Vector<Point2D> coodinates)
{       
    this.polygon.moveTo(coodinates.get(0).getX(), coodinates.get(0).getY());

    //System.out.println(coodinates.get(0).getX() + "   " + coodinates.get(0).getY());
    //System.out.println("asda");

    for(int i = 1; i < this.num_points; i++)
    {
        //System.out.println(coodinates.get(i).getX() + "   " + coodinates.get(i).getY());
        this.polygon.lineTo(coodinates.get(i).getX(), coodinates.get(i).getY());
    }
    this.polygon.closePath();
}
public boolean InsideCity(Point2D punto)
{
    return this.polygon.contains(punto);                
}

问题答案:

您可以为此使用我的简单库:https :
//github.com/snatik/polygon-contains-
point

准备多边形:

Polygon polygon = Polygon.Builder()
    .addVertex(new Point(1, 3))
    .addVertex(new Point(2, 8))
    .addVertex(new Point(5, 4))
    .addVertex(new Point(5, 9))
    .addVertex(new Point(7, 5))
    .addVertex(new Point(6, 1))
    .addVertex(new Point(3, 1))
    .build();

并检查点在多边形内部:

Point point = new Point(4.5f, 7);
boolean contains = polygon.contains(point);

它适用于浮点类型和包含孔的多边形:)



 类似资料:
  • 我正在寻找一种方法来创建一组多边形(rechtangles),沿着一条线在多个多边形中创建一组多边形(rechtangles),并将其水平隔开,如图所示。 我尝试生成点并将其用作多边形的中点,但问题是,通过创建等间距的点光栅,除了180度之外,不可能以任何其他方向旋转。 例子 给出了一个多多边形形状的对象和由宽度和高度以及每个多边形之间的垂直和水平间距定义的多边形。多边形应仅放置在多多边形内,且不

  • 我正在使用geoJSON在Android MapBox中显示一个形状。在geoJSON中,我有很多多边形,每个多边形在“属性”JSONObject中都有一个值,下面是一个示例: 我想根据值用特定颜色填充多边形。 我应该怎么做来给形状上色? 在JSON中为“poperties”对象添加一个“fill”值?(还没有为我工作。) 手动解析JSON并在“PolygonOptions”对象中使用“fillC

  • 所以我试图用pygame制作一个我们之间的游戏。我刚刚开始,所以我没有太多东西,现在正在制作地图。然而,我正在努力解决的一件事是碰撞逻辑。地图目前有一个细长的八边形形状,但是我想不管是什么形状,我都会使用类似pygame多边形的东西。当我运行我现在的代码时,它会检查我的玩家(pygame矩形)和墙壁(pygame多边形)之间的碰撞,它说: 我发现这是因为pygame多边形返回了一个矩形,但在碰撞检

  • 我有一个数据库,其中一个表(ca_licenses)是商业地址,另一个表是市议会区多边形的公共模式(ca_la_la_council)。 我运行此查询是为了将议会表中的地区号码放在企业地址表中: 我的问题是我总是得不到任何结果。两个几何列都是几何类型,SRID是4326。 示例ca_licenses数据:https://raw . githubusercontent . com/pour safe

  • 如何从多个地理位置(长,晚值)创建多边形地理围栏。也可以在Android上跟踪用户进入或退出该地理区域的情况。

  • 我在location _ table(point _ location geometry)中存储了位置,现在我在谷歌地图上绘制了一个多边形,并将该多边形(几何)传递给后端,我想找到该多边形内的所有位置。 当我将多边形从谷歌地图传递到后端时,这给了我随机的结果。它没有给我多边形内的所有点。它给了我甚至在多边形之外的点。 在 postgis 中准确查找多边形内所有点的正确方法是什么(也包括边界情况)