0

我需要在地图上定义的多边形中生成随机 LatLng 点假设我的第一个点开始于 (x,y) 并且下一个 latlng 将大于 100 米且小于 500 米

4

2 回答 2

1

您可以尝试以下方法,它使用 HashMap 创建唯一的随机数:

public void getRandomPosistions(int endPoint, int total)
{
    Set<Point> set = new HashSet<Point>();
    Random position = new Random();
    Point point;

    Point usedPos = new Point();
    // Starting Position
    usedPos.x = 100;
    usedPos.y = 100;
    set.add(usedPos);

    do
    {
        point = new Point();
        point.x=position.nextInt(endPoint);
        point.y=position.nextInt(endPoint);
        set.add(point);
    }
    while(set.size() < (total));

    List<Object> positionList = new ArrayList<Object>(set);
}
于 2013-02-25T10:34:23.753 回答
0

这很简单。

  1. 获取纬度和经度的最大值和最小值。
  2. 生成经度的随机值(使用均匀分布)。
  3. 生成纬度的随机值(您可以使用均匀分布或考虑地球的形状)。
  4. 检查随机点是否在多边形内,如果不是,请重试。
于 2013-02-25T10:39:51.367 回答