Search in sources :

Example 1 with PeriodicRequestHandler

use of cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler in project androidApp by InspectorIncognito.

the class DetailsActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle bundle = this.getIntent().getExtras();
    if (bundle.keySet().contains(BUS_STOP)) {
        busStop = bundle.getParcelable(BUS_STOP);
        periodicRequestHandler = new PeriodicRequestHandler(this, this, busStop);
    }
}
Also used : Bundle(android.os.Bundle) PeriodicRequestHandler(cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler)

Example 2 with PeriodicRequestHandler

use of cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler in project androidApp by InspectorIncognito.

the class BusStopPlugin method busStopFeatureClick.

private void busStopFeatureClick(Feature busStopFeature, BusStopClickHandler handler) {
    if (selectedBus != null) {
        Log.d(BusStopPlugin.class.getSimpleName(), "selectedBus != null");
        deselectSelectedBusFeature();
    }
    final Feature newSelectedFeature = handler.handleMarkerClick(busStopFeature, busStopFeatures);
    if (newSelectedFeature != null) {
        Log.d(BusStopPlugin.class.getSimpleName(), "newSelectedFeature != null");
        if (busStopServiceCall != null && !busStopServiceCall.isCanceled()) {
            busStopServiceCall.cancel();
        }
        busesFeatures = FeatureCollection.fromFeatures(new Feature[] {});
        if (periodicRequestHandler != null) {
            periodicRequestHandler.stopPeriodicRequest();
            periodicRequestHandler = null;
        }
        refreshBusSource();
        Log.d(BusStopPlugin.class.getSimpleName(), "selectedBusStop assign");
        if (selectedBusStop != null) {
            deselectSelectedBusStop();
        }
        selectedBusStop = newSelectedFeature;
        final BusStop busStop = ((BusStopMarker) newSelectedFeature).getBusStop();
        final BusStopLoadingLayerTask loaderTask = new BusStopLoadingLayerTask(newSelectedFeature, new BusStopLoadingLayerTask.LoadingListener() {

            @Override
            public void refresh() {
                refreshBusStopSource();
            }
        });
        final Thread thread = new Thread(loaderTask);
        thread.start();
        busStopServiceCall = busStopInfoService.getBusStopData(Installation.getPhoneId(), newSelectedFeature.getStringProperty(BusStopMarker.PROPERTY_ID));
        /*Log the URL called*/
        Log.d(BusStopPlugin.class.getSimpleName(), busStopServiceCall.request().url().toString());
        busStopServiceCall.enqueue(new Callback<ServerSentBusStopInfo>() {

            @Override
            public void onResponse(Call<ServerSentBusStopInfo> call, Response<ServerSentBusStopInfo> response) {
                Log.d(BusStopPlugin.class.getSimpleName(), "onResponse");
                if (response == null || response.body() == null) {
                    if (response != null)
                        Log.e("BusStopPlugin", response.toString());
                    return;
                }
                periodicRequestHandler = new PeriodicRequestHandler(getContext(), BusStopPlugin.this, busStop, response.body().getEventsList());
                BusStopPlugin.this.onResponse(response.body().getBusList(), response.body().getEventsList(), loaderTask, thread);
            }

            @Override
            public void onFailure(Call<ServerSentBusStopInfo> call, Throwable t) {
                Log.d(BusStopPlugin.class.getSimpleName(), "onFailure");
                if (!call.isCanceled()) {
                    Toast.makeText(getContext(), "Error de conexión", Toast.LENGTH_SHORT).show();
                }
                loaderTask.stop();
                thread.interrupt();
                deselectSelectedBusStop(newSelectedFeature);
            }
        });
        listener.onBusStopFocusGained();
        animateCameraToSelection(newSelectedFeature);
    } else {
        refreshBusSource();
        centerCameraInSelection(busStopFeature);
    }
    refreshBusStopSource();
}
Also used : PeriodicRequestHandler(cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler) BusStopMarker(cl.smartcities.isci.transportinspector.map.model.busStop.BusStopMarker) BusStopLoadingLayerTask(cl.smartcities.isci.transportinspector.map.tasks.BusStopLoadingLayerTask) Feature(com.mapbox.services.commons.geojson.Feature) BusStop(cl.smartcities.isci.transportinspector.backend.BusStop) ServerSentBusStopInfo(cl.smartcities.isci.transportinspector.model.gson.ServerSentBusStopInfo)

Example 3 with PeriodicRequestHandler

use of cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler in project androidApp by InspectorIncognito.

the class BusUserPlugin method getOnMapClickListener.

public MultiLayerOnMapClickListener getOnMapClickListener() {
    return new MultiLayerOnMapClickListener() {

        @Override
        public boolean onMapClick(@NonNull LatLng point) {
            PointF screenPoint = mapboxMap.getProjection().toScreenLocation(point);
            final List<Feature> allFeatures = mapboxMap.queryRenderedFeatures(screenPoint);
            Collections.reverse(allFeatures);
            for (Feature feature : allFeatures) {
                if (feature.hasProperty(LocationLayerConstants.PROPERTY_ON_BUS) && feature.getBooleanProperty(LocationLayerConstants.PROPERTY_ON_BUS).equals(true)) {
                    // BUS FEATURE CLICK
                    final List<Feature> infoWindowFeature = mapboxMap.queryRenderedFeatures(screenPoint, LocationLayerConstants.LOCATION_LAYER_INFO_WINDOW);
                    if (!infoWindowFeature.isEmpty()) {
                        PeriodicRequestHandler periodicRequestHandler = new PeriodicRequestHandler(TranSappApplication.getAppContext(), null, null);
                        BusClickHandler handler = new BusClickHandler(TranSappApplication.getAppContext().getResources(), periodicRequestHandler, listener);
                        PointF symbolScreenPoint = mapboxMap.getProjection().toScreenLocation(MapboxUtil.convertToLatLng(feature));
                        if (handler.handleInfoWindowClick(currentUserBus, screenPoint, symbolScreenPoint, viewMap, true)) {
                            return true;
                        }
                        minimizeFeature();
                        return true;
                    }
                    userLocationFeature.addBooleanProperty(LocationLayerConstants.PROPERTY_MAXIMIZED, true);
                    GeoJsonSource locationGeoJsonSource = mapboxMap.getSourceAs(LocationLayerConstants.LOCATION_SOURCE);
                    if (locationGeoJsonSource == null) {
                        return true;
                    }
                    locationGeoJsonSource.setGeoJson(userLocationFeature);
                    return true;
                }
            }
            // we didn't find a click event on any layer
            minimizeFeature();
            return false;
        }
    };
}
Also used : GeoJsonSource(com.mapbox.mapboxsdk.style.sources.GeoJsonSource) PeriodicRequestHandler(cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler) NonNull(android.support.annotation.NonNull) PointF(android.graphics.PointF) LatLng(com.mapbox.mapboxsdk.geometry.LatLng) MultiLayerOnMapClickListener(cl.smartcities.isci.transportinspector.map.utils.MultiLayerOnMapClickListener) Feature(com.mapbox.services.commons.geojson.Feature) BusClickHandler(cl.smartcities.isci.transportinspector.map.model.bus.BusClickHandler)

Aggregations

PeriodicRequestHandler (cl.smartcities.isci.transportinspector.periodicRequest.PeriodicRequestHandler)3 Feature (com.mapbox.services.commons.geojson.Feature)2 PointF (android.graphics.PointF)1 Bundle (android.os.Bundle)1 NonNull (android.support.annotation.NonNull)1 BusStop (cl.smartcities.isci.transportinspector.backend.BusStop)1 BusClickHandler (cl.smartcities.isci.transportinspector.map.model.bus.BusClickHandler)1 BusStopMarker (cl.smartcities.isci.transportinspector.map.model.busStop.BusStopMarker)1 BusStopLoadingLayerTask (cl.smartcities.isci.transportinspector.map.tasks.BusStopLoadingLayerTask)1 MultiLayerOnMapClickListener (cl.smartcities.isci.transportinspector.map.utils.MultiLayerOnMapClickListener)1 ServerSentBusStopInfo (cl.smartcities.isci.transportinspector.model.gson.ServerSentBusStopInfo)1 LatLng (com.mapbox.mapboxsdk.geometry.LatLng)1 GeoJsonSource (com.mapbox.mapboxsdk.style.sources.GeoJsonSource)1