2

У меня есть карта на java/andrdoid. Учитывая координату, есть способ вернуть все маркеры в радиус.У меня есть карта <Координаты, маркеры> на java/andrdoid. Учитывая координату, есть ли способ вернуть маркеры в радиус

я разобрать файл KML и получить координаты в формате строки и превратить их в

NavigableMap<double[], Marker> map = new TreeMap(); 
double[] coordinates = ... 
Marker m = ... 
map.put(coordinates, googleMap.addMarker(m)); 

и в конце концов я буду иметь кучу карты с координатами в качестве ключей и маркеров в качестве значений.

, но это дает мне

java.lang.ClassCastException: [D is not Comparable 
    at java.util.TreeMap.find(TreeMap.java:254) 
    at java.util.TreeMap.putInternal(TreeMap.java:240) 
    at java.util.TreeMap.put(TreeMap.java:186) 

Я ищу что-то вроде функции подкарта от NavigableSet вернуть все маркеры, учитывая точку + радиус.

Я понимаю, что я могу просто иметь ArrayList и сравнивать по одному

if(distance(Coordinates ,marker.getCoordinates())<=radius) 
     marker.setVisbile(true); 
..etc.. 

, но мой вопрос, является ли такая карта или HashMap, которая возвращает подмножество этой карты на основе координат с радиусом.

спасибо.

+0

есть вы считаете, чтобы обернуть свои координаты в объект инвентарь сравнимого? – user902383

+0

благодарит Даршана за редактирование –

ответ

0

Обычно для такого типа проблем R-Tree работает очень хорошо. Основная структура данных описываются on wikipedia

Есть несколько реализаций Java там, взглянуть на java spatial index или this one