package org.fundaciomobilitatsostenible.momo.csviewer;
//import android.app.Activity;
import android.os.Bundle;
//import java.util.ArrayList;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
import android.graphics.Canvas;
import android.content.Intent;
import android.content.pm.PackageManager;
import org.fundaciomobilitatsostenible.momo.csviewer.R;
import org.fundaciomobilitatsostenible.momo.cs.search.csl.Parking;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class Mapcsviewer extends MapActivity {
MapView mapView;
MapController mc;
GeoPoint p;
String csl_page;
List<Parking> parkings;
private static final String CSL_PAGE_PREF = "CSL_PAGE_PREF";
private static final String ZOOM_LEVEL ="ZOOM_LEVEL";
private static final String CENTER_LNG ="CENTER_LNG";
private static final String CENTER_LAT ="CENTER_LAT";
private static final int MENU_QUIT = 10;
private static final int MENU_REFRESH = 11;
private static final int MENU_NEW = 12;
private static final int MENU_ZOOM_ALL =13;
class MapOverlay extends com.google.android.maps.Overlay
{
protected GeoPoint latlng;
public MapOverlay(GeoPoint latlng){
super();
this.latlng = latlng;
}
@Override
public boolean draw(Canvas canvas, MapView mapView,boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(this.latlng, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
mapView.getResources(), R.drawable.ico_map);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-29, null);
return true;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences settings = getPreferences(0);
csl_page = settings.getString(CSL_PAGE_PREF,getString(R.string.csl_default_page));
int lat = settings.getInt(CENTER_LAT, 41398832);
int lng = settings.getInt(CENTER_LNG, 2177782);
int zl = settings.getInt(ZOOM_LEVEL, 13);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mc = mapView.getController();
p= new GeoPoint(lat,lng);
mc.setCenter(p);
mc.setZoom(zl);
mapView.invalidate();
updateView();
}
protected boolean updateView(){
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
getBaseContext();
try{
AndroidSaxCslParser parser = new AndroidSaxCslParser(csl_page);
parkings = parser.parse();
for (Parking parking : parkings){
p = new GeoPoint(
(int) (parking.getGeoLatLng().getLatitude() * 1E6),
(int) (parking.getGeoLatLng().getLongitude() * 1E6));
MapOverlay mapOverlay = new MapOverlay(p);
listOfOverlays.add(mapOverlay);
}
} catch (Throwable t){
Log.e("AndroidNews",t.getMessage(),t);
mapView.invalidate();
return false;
}
mapView.invalidate();
return true;
}
@Override
protected boolean isRouteDisplayed() { return false; }
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getPreferences(0);
SharedPreferences.Editor editor = settings.edit();
//editor.putBoolean("silentMode", mSilentMode);
int zl = mapView.getZoomLevel();
int lat = mapView.getMapCenter().getLatitudeE6();
int lng = mapView.getMapCenter().getLongitudeE6();
editor.putInt(ZOOM_LEVEL, zl);
editor.putInt(CENTER_LAT, lat);
editor.putInt(CENTER_LNG,lng);
editor.putString(CSL_PAGE_PREF , csl_page);
// Commit the edits!
editor.commit();
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0,MENU_ZOOM_ALL,0,R.string.csl_zoom_all);
menu.add(0, MENU_NEW, 0, R.string.csl_new);
menu.add(0, MENU_REFRESH, 0,R.string.csl_refresh);
menu.add(0, MENU_QUIT, 0, R.string.csl_quit);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
if (!super.onOptionsItemSelected(item)){
Toast toast;
switch (item.getItemId()) {
case MENU_ZOOM_ALL:
//this.mc.setZoom(zoomLevel);
return true;
case MENU_NEW:
//newCsl();
//PackageManager pm = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null,getBaseContext(),Selectcsldata.class);
Bundle bun = new Bundle();
bun.putString("cls_name", this.csl_page);
mainIntent.putExtras(bun);
//mainIntent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(mainIntent,1);
//toast = Toast.makeText(getBaseContext(),"OLE 1" , Toast.LENGTH_LONG);
//toast.show();
return true;
case MENU_REFRESH:
updateView();
toast = Toast.makeText(getBaseContext(),R.string.csl_icons_updated , Toast.LENGTH_LONG);
toast.show();
return true;
case MENU_QUIT:
this.finish();
return true;
}
}
return false;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK){
Bundle res = data.getExtras();
String cls_name = res.getString("cls_name");
csl_page=cls_name;
updateView();
}
break;
}
}
}
|