java - 比较谷歌地图 v2 android 中的两个 LatLng 对象

标签 java android double latitude-longitude google-maps-api-2

我有一个由 latLong 对象组成的数组列表,如下所示:

ArrayList < LatLng > latLngList = new ArrayList< LatLng >();

注意:LatLng 是一个具有 double 格式的纬度和经度值的对象,即纬度为 double 格式,经度为 double 格式

以下是存储在上述 latLngList 对象中的值:

Lat Long List:[lat/lng: (34.072516,-118.403609), lat/lng: (34.074227,-118.399248), lat/lng: (34.07304,-118.3995), lat/lng: (34.07304,-118.3995), lat/lng: (34.07304,-118.3995), lat/lng: (34.067856,-118.401485)]

现在,因为我在 android 中处理 google map v2,每当我点击一个特定的标记时,我都会得到纬度和经度位置,我会尝试将它与 latLngList 对象进行比较,以确定是否该对象存在于 latLngList 中。

我是按以下方式做的:

 for(LatLng latLng : latLngList) {
       marker.getPosition().equals(latLng); **Always returns false**
 }

标记位置通过以下 latLng 对象返回给我:

lat/lng: (34.074226888265116,-118.39924816042185)

很明显,marker返回的经纬度对象有点长,比较失败。

是否有更好的方法来比较 latLng 对象?

最佳答案

更好的方法不是根据LatLng 来比较标记,而是根据Marker 的标识。由于某些奇怪的原因,Marker.getPosition() 没有返回完全相同的值。

如果您想将一些附加信息附加到每个 Marker,我建议将所有标记存储在 ListMap 中。

或者,您可以在创建 Marker 后使用 Marker.getId(),将其存储并稍后在 onMarkerClick 中进行比较。

编辑:

我也在 gmaps-api-issues 上报告过这个.

关于java - 比较谷歌地图 v2 android 中的两个 LatLng 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364871/

相关文章:

java - Spring HandlerInterceptors 是如何实例化的?

java - 安卓:Thread.sleep( ) 不工作

Android在蓝牙套接字上设置超时

java - 乘以大长整型会导致精度损失

java - ViewPager PagerAdapter 不更新 View

java - 修正斐波那契数列的迭代版本

java - 缩进 Java 输出

android - LibGDX - ImageButton - 设置图像背景

arrays - "Initializer for conditional binding must have Optional type, not ' [任意] '"- swift

c - malloc() 和固定大小的简单声明之间的区别