Tôi có một ArrayList trong đó bao gồm đối tượng LatLong như hình dưới đây:So sánh hai đối tượng LatLng trong google bản đồ v2 android
ArrayList <LatLng> latLngList = new ArrayList<LatLng>();
Lưu ý: LatLng là một đối tượng trong đó có giá trị vĩ độ và kinh độ ở định dạng kép tức là, Latitude là ở định dạng đôi và Longitude là ở định dạng kép
dưới đây là những giá trị được lưu trữ trong đối tượng latLngList trên:
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)]
Bây giờ, vì tôi đang xử lý bản đồ google v2 trong android, bất cứ khi nào tôi nhấp vào một điểm đánh dấu cụ thể, tôi có được vị trí vĩ độ và kinh độ và tôi cố gắng so sánh nó với đối tượng là latLngList. trong số latLngList.
tôi đang làm nó theo cách sau:
for(LatLng latLng : latLngList) {
marker.getPosition().equals(latLng); **Always returns false**
}
Vị trí marker đang trở lại tôi với các đối tượng LatLng sau:
lat/lng: (34.074226888265116,-118.39924816042185)
Rõ ràng là các vĩ độ và kinh độ đối tượng được trả về bởi điểm đánh dấu hơi dài và do đó so sánh không thành công.
Có cách nào tốt hơn để so sánh đối tượng latLng không?
với hàng nghìn điểm có thể mất thời gian rất dài –
Bạn có thể đặt ArrayList theo khoảng cách từ Vị trí điểm đánh dấu. Chỉ cần thực hiện giao diện Comparable, vì vậy mục đầu tiên của ArrayList là cái gần nhất. – jgonza73
cái gì? bạn sẽ cần phải sắp xếp lại chúng mỗi khi nhấp vào các điểm đánh dấu khác nhau, vì vậy hiệu suất sẽ chỉ tồi tệ hơn - từ O (n) đến O (n * log (n)) –