#java #android #google-maps #google-maps-markers #cluster-manager
#java #Android #google-карты #google-карты-маркеры #диспетчер кластеров
Вопрос:
Я попытался внедрить диспетчер кластеров, следуя этому руководству разработчиков Google, но мои маркеры отображаются крайне неточно по сравнению с простым использованием googleMap.addMarker();
(пример).
Вот сравнение изображений двух
Я полагаю, это связано с offset
in addClusterPoints()
, но когда я меняю divisor( 60d
), единственное изменение заключается в том, насколько далеко распределены точки, но по-прежнему в неправильном местоположении. Я попытался изменить значение 60d
и обнаружил, что с < 60d
они более распределены, а> 60d
они менее распределены.
Может кто-нибудь объяснить, что offset
делает и как заставить точки отображаться точно?
private void addClusterPoints(){
List<LatLng> locations= new ArrayList<>(getLatLongList());
for(int i=0; i < locations.size(); i ){
double offset = i /60d;
latLng = locations.get(i);
double lat = latLng.latitude offset;
double lng = latLng.longitude offset;
mapClusterItem offsetItem = new mapClusterItem(lat, lng, "Tile " i, "Snippet" i);
clusterManager.addItem(offsetItem);
}
}
Комментарии:
1. Смещение перемещает местоположение маркеров на величину смещения — меньший делитель увеличивает смещение и, таким образом, перемещает его дальше на север и восток (первый маркер перемещается дальше, чем последний маркер, на основе увеличения числителя). Неясно, какова ваша мотивация для перемещения маркеров — если вы могли бы подробнее рассказать об этом, это может быть полезно.
2. У вас также есть потенциальная проблема с вашим циклом: вы создаете
locations
из некоторого геттера, а затем получаете доступsneezeLocations
с помощью индекса цикла — похоже, вам следует просто использоватьlocations
.3. Спасибо за отзыв,
sneezeLocations
это то же самое,locations
что и я просто пропустил это при изменении имени, чтобы задать этот вопрос; но сейчас я это исправил. Кроме того, вы правильно отображаете маркеры в правильных местах, когда смещения нет. Приветствия.
Ответ №1:
Как прокомментировал Энди, проблема заключалась в offset
. Я удалил offset
, и маркеры отображаются в их ожидаемых местоположениях.
В руководстве для разработчиков Google, на которое я ссылался, есть offset
so, я думал, что это часть процесса, но оказывается, что это совершенно не связано. Честно говоря, мне кажется странным, что они решили включить это в учебник. Единственное рассуждение, которое я мог придумать, почему они это сделают (поскольку они его не предоставляют), — это создать некоторое пространство между элементами, которые находятся очень близко друг к другу.