Я пытаюсь сделать движущиеся машины на MapBox, используя новый многообещающий слой / источник GL Symbol.Это выглядит очень хорошо как на Android, так и на iOS, но я столкнулся с двумя невозможностями.
- Символы всегда кластеризуются.setIconAllowOverlap () и setIconIgnorePlacement () не помогают: при некотором увеличении он будет кластеризован.На обеих платформах.
Как полностью отключить кластеризацию символов ?
ОБНОВЛЕНИЕ: код и даже быстрое решение!(возможно ошибка? см. комментарий на withTextField)
in onStyleLoaded():
...
carManager = new SymbolManager(mapView, mapboxMap, style);
carManager.setIconAllowOverlap(true);//doesn't help
carManager.setIconIgnorePlacement(true);//doesn't help
...
in drawCarFunction():
...
SymbolOptions carOptions = new SymbolOptions()
.withLatLng(latLng)
.withIconImage(carPlate)
//.withTextField(carPlate) //!!!! here it will cluster if text exists, and will NOT - without any text
;
Symbol car= carManager.create(carOptions);
carSymbols.add(car);
...
Следующий вопрос:
На Android у нас есть symbolManager.addClickListener (), но как я могу
отловить клик на iOS ?Я знаю, что могу поймать метчик, рассчитать ближайший маркер и т. Д., Но
Как сделать так, чтобы символ быстрее щелкал мышью?
В
Задача «Движущиеся машины» Я должен перечислить существующие машины, двигаться бегом, добавить новейшие.Где я должен хранить идентификаторы автомобилей, чтобы получить их позже на следующем ходу?Где нет даже опции symbol.setTag () ... Хранение идентификаторов во фрагменте (как в GMaps) - не тот выбор, который я ожидал от MapBox.Конечно, я могу создать массив пар "идентификатор автомобиля = идентификатор символа", но
Как сохранить свой собственный UID в символе?
ОБНОВЛЕНИЕ: код.Обратите внимание на комментарий рядом с getTag ()
void moveExistingCarOrAddNew(int carId, LatLng newLocation){
for (int i = 0; i < carManager.getAnnotations().size(); i++) {
if (carManager.getAnnotations().get(i).getTag()==carId){ //but no getTag() here, I should fit data into text fields
car.setLatLng(newLocation); //move!
} else {
...//create new marker as shown above }
}
}
}