比较 Java 中的地理位置点

Posted

技术标签:

【中文标题】比较 Java 中的地理位置点【英文标题】:Comparing Geo Location points in Java 【发布时间】:2020-10-29 09:24:40 【问题描述】:

假设我有一个 GeoPoint 类,我如何使用这样的地理位置实现 Comparable compareTo 方法:

public class GeoPoint implements Comparable<GeoPoint>, Serializable 

  private Double longitude;
  private Double latitude;

  public GeoPoint(Double longitude, Double latitude) 
    setLongitude(longitude);
    setLatitude(latitude);
  

  @Override public int compareTo(@NotNull GeoPoint geoPoint) 
    return 0;
  

【问题讨论】:

你想如何比较它们?距离基于公里还是其他? 【参考方案1】:

这不是实现compareTo() 的问题,更多的是关于如何计算两点之间的距离。也就是说,compareTo() 提供自然排序,因此您应该首先考虑如何完成此操作。 AFAIK,距离始终为正,从一个点到另一个点的距离始终相等(x->y 等于 y->x)。因此,例如,您可能想根据获得的位置点了解汽车是前进还是后退。由于地球是球形的,如何比较第二点与初始点。

我认为您不能自然而然地仅使用 lat 和 long 来订购一个点。如果有帮助,请检查以下内容。https://www.movable-type.co.uk/scripts/latlong.html

【讨论】:

以上是关于比较 Java 中的地理位置点的主要内容,如果未能解决你的问题,请参考以下文章

检查geoFence中的地理点和Java中的距离

如何比较位置

如何将地理位置点数据反序列化为 Java 实体?

在 Java 中表示和比较地理位置

将 GPS 点与当前位置进行比较

基于社交媒体数据的用户位置预测模型