Back to project page Go2-Rennes.
The source code is released under:
GNU General Public License
If you think the Android project Go2-Rennes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/******************************************************************************* * Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com * //from w ww. j ava 2 s .c o m * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package fr.gotorennes; import java.util.List; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.view.View; import com.google.android.maps.GeoPoint; import fr.gotorennes.domain.BikeStation; import fr.gotorennes.domain.MetroStation; import fr.gotorennes.domain.PointDeVente; import fr.gotorennes.domain.RelayPark; import fr.gotorennes.domain.Station; import fr.gotorennes.util.BackgroundTask; import fr.gotorennes.view.MapDrawable; public class ProximityMapActivity extends AbstractMapActivity { private boolean metroVisible; private boolean busVisible; private boolean veloVisible; private boolean parcRelaisVisible; private boolean pointDeVenteVisible; private double latitude; private double longitude; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); relayParkOverlay = new MapItemOverlay(new MapDrawable(this, R.drawable.relaypark)) { @Override protected boolean onTap(int index) { MapLocationOverlay<RelayPark> overlayItem = items.get(index); Intent intent = new Intent(getApplicationContext(), RelayParkActivity.class); intent.putExtra("relayPark", overlayItem.getItem()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return false; } }; metroOverlay = new MapItemOverlay(new MapDrawable(this, R.drawable.metro)) { @Override protected boolean onTap(int index) { MapLocationOverlay<MetroStation> overlayItem = items.get(index); Intent intent = new Intent(getApplicationContext(), MetroStationActivity.class); intent.putExtra("metroStation", overlayItem.getItem()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return false; } }; bikeOverlay = new MapItemOverlay(new MapDrawable(this, R.drawable.bike)) { @Override protected boolean onTap(int index) { MapLocationOverlay<BikeStation> overlayItem = items.get(index); Intent intent = new Intent(getApplicationContext(), BikeStationActivity.class); intent.putExtra("bikeStation", overlayItem.getItem()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return false; } }; pointDeVenteOverlay = new MapItemOverlay(new MapDrawable(this, R.drawable.pointdevente)) { @Override protected boolean onTap(int index) { MapLocationOverlay<Station> overlayItem = items.get(index); Intent intent = new Intent(getApplicationContext(), PointDeVenteActivity.class); intent.putExtra("pointDeVente", overlayItem.getItem()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return false; } }; busOverlay = new MapItemOverlay(new MapDrawable(this, R.drawable.bus)) { @Override protected boolean onTap(int index) { MapLocationOverlay<Station> overlayItem = items.get(index); Intent intent = new Intent(getApplicationContext(), BusStationActivity.class); intent.putExtra("station", overlayItem.getItem()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return false; } }; } @Override protected String getTrackingName() { return "carteGenerale"; } @Override protected void init() { populate(getIntent()); } @Override public void onNewIntent(Intent intent) { super.onNewIntent(intent); populate(intent); } protected void centerMap(double latitude, double longitude) { mapController.setZoom(18); mapController.animateTo(new GeoPoint((int) (latitude * 1e6), (int) (longitude * 1e6)), new Runnable() { @Override public void run() { loadProximityData(); } }); } public void showExternalMap(View view) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + latitude + "," + longitude + "&z=18"))); } boolean changePending = false; @Override protected synchronized void onMapChange() { if (!changePending) { changePending = true; loadProximityData(); } } protected void populate(Intent intent) { latitude = intent.getDoubleExtra("latitude", 48.110067); longitude = intent.getDoubleExtra("longitude", -1.679149); centerMap(latitude, longitude); } private double latitudeT; private double latitudeB; private double longitudeL; private double longitudeR; @Override protected void loadProximityData() { SharedPreferences prefs = getSharedPreferences("fr.gotorennes.Application", 0); metroVisible = prefs.getBoolean("checkMetro", true); busVisible = prefs.getBoolean("checkBus", true); veloVisible = prefs.getBoolean("checkBike", true); parcRelaisVisible = prefs.getBoolean("checkRelayPark", true); pointDeVenteVisible = prefs.getBoolean("checkPointDeVente", true); GeoPoint center = mapView.getMapCenter(); int latitudeCenter = center.getLatitudeE6(); int longitudeCenter = center.getLongitudeE6(); int latitudeSpan = mapView.getLatitudeSpan(); int longitudeSpan = mapView.getLongitudeSpan(); latitudeT = (latitudeCenter + (latitudeSpan / 2) + (latitudeSpan / 10)) / 1e6; latitudeB = (latitudeCenter - (latitudeSpan / 2) - (latitudeSpan / 10)) / 1e6; longitudeL = (longitudeCenter + (longitudeSpan / 2) + (longitudeSpan / 10)) / 1e6; longitudeR = (longitudeCenter - (longitudeSpan / 2) - (longitudeSpan / 10)) / 1e6; loadRelayParks(); } private MapItemOverlay relayParkOverlay; protected void loadRelayParks() { if (!parcRelaisVisible) { relayParkOverlay.removeAllItems(); loadMetroStations(); return; } BackgroundTask<List<RelayPark>> backgroundTask = new BackgroundTask<List<RelayPark>>(false) { @Override protected List<RelayPark> execute() { return goToRennes.getRelayParkService().getRelayParks(latitudeB, latitudeT, longitudeL, longitudeR); } @Override protected void callback(List<RelayPark> result) { if (result != null) { relayParkOverlay.removeAllItems(); for (RelayPark relay : result) { relayParkOverlay.addItem(new MapLocationOverlay<RelayPark>(relay.name, relay.latitude, relay.longitude, relay)); } addOverlay(relayParkOverlay); } loadMetroStations(); } }; backgroundTask.start(this); } private MapItemOverlay metroOverlay; protected void loadMetroStations() { if (!metroVisible) { metroOverlay.removeAllItems(); loadBikeStations(); return; } BackgroundTask<List<MetroStation>> backgroundTask = new BackgroundTask<List<MetroStation>>(false) { @Override protected List<MetroStation> execute() { return goToRennes.getMetroStationService().getMetroStations(latitudeB, latitudeT, longitudeL, longitudeR); } @Override protected void callback(List<MetroStation> result) { if (result != null) { metroOverlay.removeAllItems(); for (MetroStation metroStation : result) { metroOverlay.addItem(new MapLocationOverlay<MetroStation>(metroStation.name, metroStation.latitude, metroStation.longitude, metroStation)); } addOverlay(metroOverlay); } loadBikeStations(); } }; backgroundTask.start(this); } private MapItemOverlay bikeOverlay; protected void loadBikeStations() { if (!veloVisible) { bikeOverlay.removeAllItems(); loadPointsDeVente(); return; } BackgroundTask<List<BikeStation>> backgroundTask = new BackgroundTask<List<BikeStation>>(false) { @Override protected List<BikeStation> execute() { return goToRennes.getBikeStationService().getBikeStations(latitudeB, latitudeT, longitudeL, longitudeR); } @Override protected void callback(List<BikeStation> result) { if (result != null) { bikeOverlay.removeAllItems(); for (BikeStation bikeStation : result) { bikeOverlay.addItem(new MapLocationOverlay<BikeStation>(bikeStation.name, bikeStation.latitude, bikeStation.longitude, bikeStation)); } addOverlay(bikeOverlay); } loadPointsDeVente(); } }; backgroundTask.start(this); } private MapItemOverlay pointDeVenteOverlay; protected void loadPointsDeVente() { if (!pointDeVenteVisible) { pointDeVenteOverlay.removeAllItems(); loadBusStations(); return; } BackgroundTask<List<PointDeVente>> backgroundTask = new BackgroundTask<List<PointDeVente>>(false) { @Override protected List<PointDeVente> execute() { return goToRennes.getPointDeVenteService().getPointsDeVente(latitudeB, latitudeT, longitudeL, longitudeR); } @Override protected void callback(List<PointDeVente> result) { if (result != null) { pointDeVenteOverlay.removeAllItems(); for (PointDeVente pointDeVente : result) { pointDeVenteOverlay.addItem(new MapLocationOverlay<PointDeVente>(pointDeVente.nom, pointDeVente.latitude, pointDeVente.longitude, pointDeVente)); } addOverlay(pointDeVenteOverlay); } loadBusStations(); } }; backgroundTask.start(this); } private MapItemOverlay busOverlay; protected void loadBusStations() { if (!busVisible) { busOverlay.removeAllItems(); changePending = false; mapView.invalidate(); return; } BackgroundTask<List<Station>> backgroundTask = new BackgroundTask<List<Station>>(false) { @Override protected List<Station> execute() { return goToRennes.getBusDao().getStations(latitudeB, latitudeT, longitudeL, longitudeR); } @Override protected void callback(List<Station> result) { busOverlay.removeAllItems(); for (Station busStop : result) { busOverlay.addItem(new MapLocationOverlay<Station>(busStop.nom, busStop.latitude, busStop.longitude, busStop)); } addOverlay(busOverlay); changePending = false; mapView.invalidate(); } }; backgroundTask.start(this); } }