Search in sources :

Example 1 with TransportIndexRepository

use of net.osmand.plus.resources.TransportIndexRepository in project Osmand by osmandapp.

the class AmenityMenuController method processTransportStop.

private void processTransportStop() {
    routes = new ArrayList<>();
    List<TransportIndexRepository> reps = getMapActivity().getMyApplication().getResourceManager().searchTransportRepositories(amenity.getLocation().getLatitude(), amenity.getLocation().getLongitude());
    boolean useEnglishNames = getMapActivity().getMyApplication().getSettings().usingEnglishNames();
    boolean isSubwayEntrance = amenity.getSubType().equals("subway_entrance");
    for (TransportIndexRepository t : reps) {
        ArrayList<TransportStop> ls = new ArrayList<>();
        QuadRect ll = MapUtils.calculateLatLonBbox(amenity.getLocation().getLatitude(), amenity.getLocation().getLongitude(), isSubwayEntrance ? 400 : 150);
        t.searchTransportStops(ll.top, ll.left, ll.bottom, ll.right, -1, ls, null);
        for (TransportStop tstop : ls) {
            addRoutes(useEnglishNames, t, tstop, (int) MapUtils.getDistance(tstop.getLocation(), amenity.getLocation()), isSubwayEntrance);
        }
    }
    Collections.sort(routes, new Comparator<TransportStopRoute>() {

        @Override
        public int compare(TransportStopRoute o1, TransportStopRoute o2) {
            if (o1.distance != o2.distance) {
                return Algorithms.compare(o1.distance, o2.distance);
            }
            int i1 = Algorithms.extractFirstIntegerNumber(o1.desc);
            int i2 = Algorithms.extractFirstIntegerNumber(o2.desc);
            if (i1 != i2) {
                return Algorithms.compare(i1, i2);
            }
            return o1.desc.compareTo(o2.desc);
        }
    });
    builder.setRoutes(routes);
}
Also used : TransportStopRoute(net.osmand.plus.transport.TransportStopRoute) ArrayList(java.util.ArrayList) TransportIndexRepository(net.osmand.plus.resources.TransportIndexRepository) TransportStop(net.osmand.data.TransportStop) QuadRect(net.osmand.data.QuadRect)

Example 2 with TransportIndexRepository

use of net.osmand.plus.resources.TransportIndexRepository in project Osmand by osmandapp.

the class TransportStopController method processTransportStop.

public List<TransportStopRoute> processTransportStop() {
    ArrayList<TransportStopRoute> routes = new ArrayList<>();
    List<TransportIndexRepository> reps = getMapActivity().getMyApplication().getResourceManager().searchTransportRepositories(transportStop.getLocation().getLatitude(), transportStop.getLocation().getLongitude());
    boolean useEnglishNames = getMapActivity().getMyApplication().getSettings().usingEnglishNames();
    for (TransportIndexRepository t : reps) {
        if (t.acceptTransportStop(transportStop)) {
            boolean empty = transportStop.getReferencesToRoutes() == null || transportStop.getReferencesToRoutes().length == 0;
            if (!empty) {
                addRoutes(routes, useEnglishNames, t, transportStop, transportStop, 0);
            }
            ArrayList<TransportStop> ls = new ArrayList<>();
            QuadRect ll = MapUtils.calculateLatLonBbox(transportStop.getLocation().getLatitude(), transportStop.getLocation().getLongitude(), SHOW_STOPS_RADIUS_METERS);
            t.searchTransportStops(ll.top, ll.left, ll.bottom, ll.right, -1, ls, null);
            for (TransportStop tstop : ls) {
                if (tstop.getId().longValue() != transportStop.getId().longValue() || empty) {
                    addRoutes(routes, useEnglishNames, t, tstop, transportStop, (int) MapUtils.getDistance(tstop.getLocation(), transportStop.getLocation()));
                }
            }
        }
    }
    Collections.sort(routes, new Comparator<TransportStopRoute>() {

        @Override
        public int compare(TransportStopRoute o1, TransportStopRoute o2) {
            if (o1.distance != o2.distance) {
                return Algorithms.compare(o1.distance, o2.distance);
            }
            int i1 = Algorithms.extractFirstIntegerNumber(o1.desc);
            int i2 = Algorithms.extractFirstIntegerNumber(o2.desc);
            if (i1 != i2) {
                return Algorithms.compare(i1, i2);
            }
            return o1.desc.compareTo(o2.desc);
        }
    });
    return routes;
}
Also used : TransportStopRoute(net.osmand.plus.transport.TransportStopRoute) ArrayList(java.util.ArrayList) TransportIndexRepository(net.osmand.plus.resources.TransportIndexRepository) TransportStop(net.osmand.data.TransportStop) QuadRect(net.osmand.data.QuadRect)

Aggregations

ArrayList (java.util.ArrayList)2 QuadRect (net.osmand.data.QuadRect)2 TransportStop (net.osmand.data.TransportStop)2 TransportIndexRepository (net.osmand.plus.resources.TransportIndexRepository)2 TransportStopRoute (net.osmand.plus.transport.TransportStopRoute)2