kri*_*Oid 5 java double android latitude-longitude google-maps-api-2
我有一个arraylist,它由latLong对象组成,如下所示:
ArrayList < LatLng > latLngList = new ArrayList< LatLng >();
Run Code Online (Sandbox Code Playgroud)
注意:LatLng是一个具有双重格式的纬度和经度值的对象,即纬度为双格式,经度为双格式
以下是存储在上述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)]
Run Code Online (Sandbox Code Playgroud)
现在,因为我在android中处理谷歌地图v2,每当我点击一个特定的标记我得到纬度和经度位置,我尝试将它与latLngList对象进行比较,以找出该对象是否存在于latLngList中.
我是按照以下方式进行的:
for(LatLng latLng : latLngList) {
marker.getPosition().equals(latLng); **Always returns false**
}
Run Code Online (Sandbox Code Playgroud)
标记位置使用以下latLng对象返回:
lat/lng: (34.074226888265116,-118.39924816042185)
Run Code Online (Sandbox Code Playgroud)
很明显,标记返回的纬度和经度对象有点冗长,因此比较失败.
有没有更好的方法来比较latLng对象?
更好的方法是不要比较基于的标记LatLng,而是基于标识Marker.由于一些奇怪的原因Marker.getPosition(),不会返回完全相同的值.
我建议将所有标记存储在一个List或者Map如果你想为每个标记添加一些额外的信息Marker.
或者,您可以Marker.getId()在创建之后使用Marker它,将其存储起来,然后将其进行比较onMarkerClick.
编辑:
我也在gmaps-api问题上报告过这个问题.