/v3.2/nimbits-android/src/com/nimbits/android/activity/MapViewActivity.java
http://nimbits-server.googlecode.com/ · Java · 312 lines · 212 code · 71 blank · 29 comment · 18 complexity · f5f7862266f24bf7e2e867d9196b204e MD5 · raw file
- package com.nimbits.android.activity;
-
- import android.app.AlertDialog;
- import android.content.Intent;
- import android.graphics.drawable.Drawable;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.GestureDetector;
- import android.view.GestureDetector.OnGestureListener;
- import android.view.*;
- import com.google.android.maps.*;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.reflect.TypeToken;
- import com.nimbits.android.MapOverlay;
- import com.nimbits.android.R;
- import com.nimbits.android.account.OwnerAccountFactory;
- import com.nimbits.client.model.Const;
- import com.nimbits.client.model.common.CommonFactoryLocator;
- import com.nimbits.client.model.point.Point;
- import com.nimbits.client.model.point.PointModel;
- import com.nimbits.client.model.point.PointName;
- import com.nimbits.client.model.value.Value;
-
- import java.lang.reflect.Type;
- import java.util.LinkedList;
- import java.util.List;
-
- public class MapViewActivity extends MapActivity implements OnGestureListener {
- private List<Overlay> mapOverlays;
- private Drawable drawable;
- private Drawable drawableAlarm;
- private MapOverlay itemizedOverlay;
- private MapOverlay itemizedAlarmOverlay;
- private MapController mc;
- private String json;
- private Point point;
-
- private final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss Z").serializeNulls().create();
- private GestureDetector gestureScanner;
- private String baseURL;
-
- private void informUser()
- {
- AlertDialog.Builder dialog = new AlertDialog.Builder(MapViewActivity.this);
- dialog.setTitle("No GPS Data to Show");
- dialog.setMessage("In order to show your point data on a map, you must record at least one value with GPS Coordinates. Please visit www.nimbits.com to learn more");
- dialog.show();
- }
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.map_view);
- gestureScanner = new GestureDetector(this);
- Bundle b = getIntent().getExtras();
- PointName pointName = (PointName) CommonFactoryLocator.getInstance().createPointName(b.getString(Const.PARAM_POINT));
-
- json = b.getString(Const.PARAM_JSON);
- //String Category = b.getString("Category");
- String type = b.getString(Const.PARAM_TYPE);
- baseURL = b.getString(baseURL);
- MapView mapView = (MapView) findViewById(R.id.mapview1);
- mapView.setBuiltInZoomControls(true);
- mapView.setClickable(true);
- mc = mapView.getController();
-
- mapOverlays = mapView.getOverlays();
-
- drawable = this.getResources().getDrawable(R.drawable.greenflag);
-
- drawableAlarm = this.getResources().getDrawable(R.drawable.redflag);
-
- itemizedOverlay = new MapOverlay(drawable, MapViewActivity.this);
-
- itemizedAlarmOverlay = new MapOverlay(drawableAlarm, MapViewActivity.this);
-
- boolean additems = false;
- boolean addalarms = false;
-
-
- if (type.equals("point"))
- {
- if (json != null)
- {
-
- point = gson.fromJson(json, PointModel.class);
- }
-
-
- List<Value> values = null;
- //try {
- values = OwnerAccountFactory.getInstance().getNimbitsClient(MapViewActivity.this, baseURL).getSeries(pointName, 10);
- if (values != null)
- {
- if (values.size() > 0)
- {
- for (Value v: values)
- {
- Log.v("V","" + v.getValue() + v.getLatitude() + v.getLongitude());
- if (v.getLatitude() != 0 && v.getLongitude() !=0)
- {
- Log.v("map", "adding to map");
- int lat = (int) (v.getLatitude() * 1e6);
- int lng = (int) (v.getLongitude() * 1e6);
-
- GeoPoint geopoint = new GeoPoint(lat,lng);
- OverlayItem overlayitem = new OverlayItem(geopoint,v.getTimestamp().toString(),v.getValue() + " " + v.getNote());
-
- //if (! point.i
- {
- overlayitem.setMarker(drawable);
-
- }
- // else
- // {
- // Log.v("map", "adding alarm to map");
- // overlayitem.setMarker(drawableAlarm);
- // }
- itemizedOverlay.addOverlay(overlayitem);
- mc.animateTo(geopoint);
- mc.setCenter(geopoint);
- mc.setZoom(15);
-
-
-
- }
-
- }
-
- mapOverlays.add(itemizedOverlay);
- }
- else
- {
- informUser();
- }
-
-
-
- }
- else
- {
- Type pointListType = new TypeToken<LinkedList<Point>>() {}.getType();
- LinkedList<Point> points = gson.fromJson(json, pointListType);
-
- Log.v("j",json);
- if (points.size() > 0)
- {
- for (Point p : points)
- {
- Log.v("map", "adding to map");
- Log.v("map",""+p.getLastLat());
- Log.v("map",""+ p.getLastLng());
- Value value;
- value = OwnerAccountFactory.getInstance().getNimbitsClient(MapViewActivity.this, baseURL).getCurrentRecordedValue(pointName);
-
-
-
- if (p.getLastLat() != 0 && p.getLastLng() !=0)
- {
- Log.v("map","lat" + p.getLastLat() );
- Log.v("map","lng" + p.getLastLng() );
-
- int lat = (int) (p.getLastLat() * 1e6);
- int lng = (int) (p.getLastLng() * 1e6);
-
- GeoPoint geopoint = new GeoPoint(lat,lng);
- OverlayItem overlayitem = new OverlayItem(geopoint,p.getName().getValue(),value.getValue() + " " + value.getNote());
- //
- // if (! p.isAlarm())
- // {
- // overlayitem.setMarker(drawable );
- // itemizedOverlay.addOverlay(overlayitem);
- // additems = true;
- // }
- // else
- // {
- Log.v("map", "adding alarm to map");
- overlayitem.setMarker(drawableAlarm);
- itemizedAlarmOverlay.addOverlay(overlayitem);
- addalarms = true;
- //}
-
- mc.animateTo(geopoint);
- mc.setCenter(geopoint);
- mc.setZoom(15);
- }
-
- }
- if (additems)
- {
- mapOverlays.add(itemizedOverlay);
-
- }
-
- if (addalarms)
- {
- mapOverlays.add(itemizedAlarmOverlay);
-
- }
-
- //mapOverlays.add(itemizedOverlay);
- }
- else
- {
- informUser();
- }
- }
- }
-
-
-
-
-
- }
- private void loadCategories()
- {
- Bundle b = new Bundle();
- Intent intent = new Intent();
- b.putBoolean(Const.PARAM_RELOAD, false);
- b.putString(Const.PARAM_BASE_URL,baseURL);
- intent.putExtras( b);
- intent.setClass( MapViewActivity.this , StartActivity.class);
- startActivity(intent);
- finish();
- }
-
- @Override
- protected boolean isRouteDisplayed() {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
-
- case R.id.main_menu:
- loadCategories();
- return true;
-
-
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.map_menu, menu);
- return true;
- }
- @Override
- public void onDestroy(){
-
- super.onDestroy();
-
- this.finish();
- }
-
-
-
-
-
- public void onTerminate() {
-
- // clean up application global
-
- //super.onStop();
-
- super.onDestroy();
-
- this.finish(); // /// close the application
-
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
-
- return gestureScanner.onTouchEvent(event);
-
- }
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
- float distanceY) {
- // TODO Auto-generated method stub
- return false;
- }
-
- public void onShowPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
- }
-
- public boolean onSingleTapUp(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- }