use of io.jawg.osmcontributor.model.entities.Poi in project osm-contributor by jawg.
the class MapFragmentPresenter method onLoaded.
private void onLoaded(List<MapElement> mapElements, LocationMarkerView.MarkerType markerType) {
LocationMarkerView markerSelected = mapFragment.getMarkerSelected();
for (MapElement mapElement : mapElements) {
ids.add(mapElement.getId());
LocationMarkerViewOptions markerOptions = mapFragment.getMarkerOptions(markerType, mapElement.getId());
boolean selected = false;
if (markerOptions == null) {
markerOptions = new LocationMarkerViewOptions<>().relatedObject(mapElement).position(mapElement.getPosition());
if (mapFragment.getSelectedMarkerType().equals(markerType) && mapElement.getId().equals(mapFragment.getMarkerSelectedId())) {
selected = true;
mapFragment.setMarkerSelected(markerOptions.getMarker());
} else if (mapFragment.getSelectedMarkerType().equals(LocationMarkerView.MarkerType.POI) && markerSelected != null && mapElement.getId().equals(((Poi) markerSelected.getRelatedObject()).getId())) {
selected = true;
}
// the poi in edition should be hidden
if (!(markerSelected != null && mapFragment.getMapMode() == MapMode.POI_POSITION_EDITION && markerSelected.equals(markerOptions.getMarker())) && (mapElement instanceof Poi && !((Poi) mapElement).getToDelete())) {
setIcon(markerOptions, mapElement, selected);
mapFragment.addPoi(markerOptions);
}
if (markerType == LocationMarkerView.MarkerType.NOTE) {
if (mapFragment.getSelectedMarkerType().equals(LocationMarkerView.MarkerType.NOTE) && mapElement.getId().equals(mapFragment.getMarkerSelectedId())) {
mapFragment.setMarkerSelected(markerOptions.getMarker());
}
setIcon(markerOptions, mapElement, false);
mapFragment.addNote(markerOptions);
}
} else {
if (markerType == LocationMarkerView.MarkerType.POI) {
Poi poi = (Poi) mapElement;
Poi oldPoi = (Poi) markerOptions.getMarker().getRelatedObject();
oldPoi.setName(poi.getName());
oldPoi.setUpdated(poi.getUpdated());
selected = false;
if (mapFragment.getSelectedMarkerType().equals(LocationMarkerView.MarkerType.POI) && (mapElement.getId().equals(mapFragment.getMarkerSelectedId()) || markerSelected != null && mapElement.getId().equals(((Poi) markerSelected.getRelatedObject()).getId()))) {
selected = true;
}
setIcon(markerOptions, oldPoi, selected);
} else {
if (mapFragment.getSelectedMarkerType().equals(LocationMarkerView.MarkerType.NOTE) && markerSelected != null && mapElement.getId().equals(((Note) markerSelected.getRelatedObject()).getId())) {
selected = true;
}
setIcon(markerOptions, mapElement, selected);
}
// update the detail banner data
if (selected) {
if (mapFragment.getMapMode() == MapMode.DETAIL_NOTE) {
eventBus.post(new PleaseChangeValuesDetailNoteFragmentEvent((Note) mapElement));
} else {
Poi poi = (Poi) mapElement;
eventBus.post(new PleaseChangeValuesDetailPoiFragmentEvent(poi));
}
}
}
}
if ((mapFragment.getMapMode() == MapMode.DEFAULT || mapFragment.getMapMode() == MapMode.POI_CREATION)) {
mapFragment.reselectMarker();
}
if (mapFragment.getSelectedMarkerType().equals(markerType) && markerSelected == null) {
mapFragment.setMarkerSelectedId(-1L);
}
}
Aggregations