use of cl.smartcities.isci.transportinspector.backend.BusStop in project androidApp by InspectorIncognito.
the class BusStopPlugin method updateBusStopSource.
private void updateBusStopSource(List<BusStop> busStops) {
List<Feature> markerCoordinates = new ArrayList<>();
boolean added = false;
for (BusStop busStop : busStops) {
if (selectedBusStop != null && selectedBusStop.getStringProperty(BusStopMarker.PROPERTY_ID).equals(busStop.getId())) {
markerCoordinates.add(selectedBusStop);
added = true;
} else {
markerCoordinates.add(new BusStopMarker(busStop));
}
}
if (selectedBusStop != null && !added)
markerCoordinates.add(selectedBusStop);
busStopFeatures = FeatureCollection.fromFeatures(markerCoordinates);
refreshBusStopSource();
}
use of cl.smartcities.isci.transportinspector.backend.BusStop in project androidApp by InspectorIncognito.
the class StepJsonBuilder method getRoute.
private Route getRoute(JSONObject route, Context context) throws JSONException {
List<IStep> steps = new ArrayList<>();
List<GoogleStep> googleSteps = new ArrayList<>();
List<InnerPolyline> polyline = new ArrayList<>();
List<BusStop> busStops = new ArrayList<>();
String title = null;
String firstTitle = null;
JSONObject leg = route.getJSONArray("legs").getJSONObject(0);
JSONObject northeast = route.getJSONObject("bounds").getJSONObject("northeast");
JSONObject southwest = route.getJSONObject("bounds").getJSONObject("southwest");
Location northeastPoint = new ComparableLocation(northeast.getDouble("lat"), northeast.getDouble("lng"));
Location southwestPoint = new ComparableLocation(southwest.getDouble("lat"), southwest.getDouble("lng"));
String start = leg.getString("start_address");
String end = leg.getString("end_address");
String departureTime = leg.getJSONObject("departure_time").getString("text");
String arrivalTime = leg.getJSONObject("arrival_time").getString("text");
String duration = leg.getJSONObject("duration").getString("text");
GoogleStep prevState = new NullStep("Tu UbicaciĆ³n", start, departureTime);
GoogleStep currentState;
JSONArray rawSteps = leg.getJSONArray("steps");
for (int i = 0; i < rawSteps.length(); i++) {
JSONObject step = rawSteps.getJSONObject(i);
Location startPoint = new ComparableLocation(step.getJSONObject("start_location").getDouble("lat"), step.getJSONObject("start_location").getDouble("lng"));
Location endPoint = new ComparableLocation(step.getJSONObject("end_location").getDouble("lat"), step.getJSONObject("end_location").getDouble("lng"));
String travel_mode = step.getString("travel_mode");
String stepDuration = step.getJSONObject("duration").getString("text");
String actualRoute = step.getJSONObject("polyline").getString("points");
if (travel_mode.equals("TRANSIT")) {
JSONObject details = step.getJSONObject("transit_details");
String mode = details.getJSONObject("line").getJSONObject("vehicle").getString("type");
String line = details.getJSONObject("line").getString("short_name");
String departure = details.getJSONObject("departure_stop").getString("name");
String arrival = details.getJSONObject("arrival_stop").getString("name");
if (mode.equals("BUS")) {
try {
currentState = new BusStep(departure, arrival, stepDuration, line, actualRoute, startPoint, endPoint);
} catch (IllegalStateException exception) {
return null;
}
BusStop arrivalStop = getBusStop(arrival, context, endPoint);
if (arrivalStop == null) {
return null;
}
busStops.add(arrivalStop);
if (!prevState.isBusStep()) {
BusStop departureStop = getBusStop(departure, context, startPoint);
if (departureStop == null) {
return null;
}
busStops.add(departureStop);
}
} else {
String color = details.getJSONObject("line").getString("color");
currentState = new SubwayStep(departure, arrival, stepDuration, line, color, actualRoute, startPoint, endPoint);
}
if (title == null) {
title = currentState.getTitle();
}
} else {
int rawStepDuration = step.getJSONObject("duration").getInt("value");
currentState = new WalkingStep(stepDuration, rawStepDuration, actualRoute, startPoint, endPoint);
}
if (firstTitle == null) {
firstTitle = currentState.getTitle();
}
polyline.add(currentState.getPolyline());
googleSteps.add(currentState);
steps.add(prevState.dispatch(currentState, new StepBuilder(context)));
prevState = currentState;
}
currentState = new NullStep("Tu destino", end, arrivalTime);
steps.add(prevState.dispatch(currentState, new StepBuilder(context)));
title = title == null ? firstTitle : title;
return new Route(steps, googleSteps, duration, northeastPoint, southwestPoint, polyline, busStops, title);
}
use of cl.smartcities.isci.transportinspector.backend.BusStop in project androidApp by InspectorIncognito.
the class BusStep method getNearestBusStop.
@Nullable
private BusStop getNearestBusStop(Location point) {
BusStopHelper helper = new BusStopHelper(TranSappApplication.getAppContext());
List<BusStop> buses = helper.getNearestBusStops(point.getLatitude(), point.getLongitude(), 1);
if (buses.isEmpty()) {
return null;
}
return buses.get(0);
}
use of cl.smartcities.isci.transportinspector.backend.BusStop in project androidApp by InspectorIncognito.
the class BusStopIconsBuilder method setIconsAndViews.
public void setIconsAndViews(LayoutInflater inflater, HashMap<String, Bitmap> imagesMap, HashMap<String, View> viewMap) {
for (Feature feature : featureCollection.getFeatures()) {
String id = feature.getStringProperty(Marker.PROPERTY_ID);
BusStopMarker marker = (BusStopMarker) feature;
BusStop busStop = marker.getBusStop();
View view = inflater.inflate(R.layout.bus_stop_bubble, null);
TextView code = view.findViewById(R.id.bubble_bus_stop_code);
TextView name = view.findViewById(R.id.bubble_bus_stop_name);
code.setText(id);
name.setText(busStop.getName());
AppCompatImageView favIcon = view.findViewById(R.id.fav_icon);
final FavoriteHelper helper = new FavoriteHelper(view.getContext());
boolean isFavorite = helper.isFavorite(busStop.getId());
if (isFavorite) {
favIcon.setColorFilter(ContextCompat.getColor(view.getContext(), R.color.yellow_fav));
}
List<ServerSentBus> buses = Bus.filterDummyPlates(busStop.getIncomingBuses());
buses = ServerSentBus.orderBusesByDistance(buses);
if (!buses.isEmpty()) {
view.findViewById(R.id.bus_layout).setVisibility(View.VISIBLE);
view.findViewById(R.id.bus_empty_layout).setVisibility(View.GONE);
setupNearBusLayout(view, getNearestVisibleBus(buses, busStop));
} else {
view.findViewById(R.id.bus_layout).setVisibility(View.GONE);
view.findViewById(R.id.bus_empty_layout).setVisibility(View.VISIBLE);
}
setEventLayout(view, marker.getEvents());
Bitmap bitmap = GenerateViewIconTask.SymbolGenerator.generate(view);
imagesMap.put(id + "-max", bitmap);
viewMap.put("busStop-max", view);
View viewMin = inflater.inflate(R.layout.bus_stop_minimize_bubble, null);
TextView nameMin = viewMin.findViewById(R.id.bubble_bus_stop_code);
nameMin.setText(id);
((ImageView) viewMin.findViewById(R.id.maximize)).setImageDrawable(new GreenButtonUp(viewMin.getContext()));
imagesMap.put(id + "-min", GenerateViewIconTask.SymbolGenerator.generate(viewMin));
viewMap.put("busStop-min", viewMin);
}
}
use of cl.smartcities.isci.transportinspector.backend.BusStop in project androidApp by InspectorIncognito.
the class SearchBusStopEngine method updateBusStopSource.
public void updateBusStopSource(List<BusStop> busStops) {
List<Feature> markerCoordinates = new ArrayList<>();
for (BusStop busStop : busStops) {
markerCoordinates.add(new BusStopMarker(busStop));
}
busStopFeatures = FeatureCollection.fromFeatures(markerCoordinates);
refreshSourceWithFeatures(busStopSource, busStopFeatures);
}
Aggregations