diff options
author | Teddy <[email protected]> | 2013-08-28 23:24:05 +0800 |
---|---|---|
committer | Teddy <[email protected]> | 2013-08-28 23:24:05 +0800 |
commit | 8f1982baf087949df2ac6492235b411a7cfdf59f (patch) | |
tree | 98f07be4e5df4888a47e03f27c2f7cf94e340ab5 /client/Piztor/src/com/macaroon | |
parent | cef62991bfc27f763e9d4f83170bdff828fb96a9 (diff) | |
parent | 956c10597fa5e504eab9255a5fde61a54c6f1972 (diff) |
Merge branch 'master' of github.com:Determinant/piztor
Diffstat (limited to 'client/Piztor/src/com/macaroon')
-rw-r--r-- | client/Piztor/src/com/macaroon/piztor/Main.java | 71 | ||||
-rw-r--r-- | client/Piztor/src/com/macaroon/piztor/MapMaker.java | 311 |
2 files changed, 250 insertions, 132 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/Main.java b/client/Piztor/src/com/macaroon/piztor/Main.java index 5aa767d..03e7ebc 100644 --- a/client/Piztor/src/com/macaroon/piztor/Main.java +++ b/client/Piztor/src/com/macaroon/piztor/Main.java @@ -4,8 +4,6 @@ import java.util.Timer; import java.util.TimerTask; import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -21,15 +19,10 @@ import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; -import com.baidu.mapapi.map.ItemizedOverlay; import com.baidu.mapapi.map.LocationData; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.OverlayItem; -import com.baidu.mapapi.map.PopupClickListener; import com.baidu.mapapi.map.PopupOverlay; -import com.baidu.platform.comapi.basestruct.GeoPoint; - -import com.macaroon.piztor.BMapUtil; public class Main extends PiztorAct { final static int SearchButtonPress = 1; @@ -39,9 +32,23 @@ public class Main extends PiztorAct { final static int Fetch = 6; final static int mapViewtouched = 7; + /** + * popups + */ + private PopupOverlay pop = null; + private TextView popupText = null; + private View viewCache = null; + private View popupInfo = null; + private View popupLeft = null; + private View popupRight = null; + private MapView.LayoutParams layoutParam = null; + private OverlayItem mCurItem = null; + MapMaker mapMaker = null; MapView mMapView; + boolean isFirstLocation = true; + /** * Locating component */ @@ -50,7 +57,7 @@ public class Main extends PiztorAct { public MyLocationListener myListener = new MyLocationListener(); ImageButton btnSearch, btnFetch, btnFocus, btnSettings; - //Timer autodate; + // Timer autodate; MapInfo mapInfo; /* * @SuppressLint("HandlerLeak") Handler fromGPS = new Handler() { @@ -100,11 +107,7 @@ public class Main extends PiztorAct { + " group : " + r.gid); if (r.uid == Infomation.myInfo.uid) { Infomation.myInfo.gid = r.gid; - try { - //autodate.schedule(new AutoUpdate(), 0, 5000); - } catch (Exception e) { - e.printStackTrace(); - } + Infomation.myInfo.sex = r.sex; } else { UserInfo user = mapInfo.getUserInfo(r.uid); if (user != null) @@ -119,9 +122,14 @@ public class Main extends PiztorAct { } break; case 4:// 登出 - Toast toast = Toast.makeText(getApplicationContext(), - "logout failed", Toast.LENGTH_LONG); - toast.show(); + ResLogout logout = (ResLogout) m.obj; + if (logout.s == 0) { + actMgr.trigger(AppMgr.logout); + } else { + Toast toast = Toast.makeText(getApplicationContext(), + "logout failed", Toast.LENGTH_LONG); + toast.show(); + } break; default: break; @@ -150,6 +158,9 @@ public class Main extends PiztorAct { void flushMap() { if (mapMaker != null) mapMaker.UpdateMap(AppMgr.mapInfo); + else + System.out + .println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); } public class MyLocationListener implements BDLocationListener { @@ -165,9 +176,14 @@ public class Main extends PiztorAct { locData.accuracy = location.getRadius(); locData.direction = location.getDerect(); - mapMaker.UpdateLocationOverlay(locData, false); - if (Infomation.token != null) - AppMgr.transam.send(new ReqUpdate(Infomation.token, Infomation.username, locData.latitude, locData.longitude, System.currentTimeMillis(), 2000)); + mapMaker.UpdateLocationOverlay(locData, isFirstLocation); + isFirstLocation = false; + if (Infomation.token != null) { + AppMgr.transam.send(new ReqUpdate(Infomation.token, + Infomation.username, locData.latitude, + locData.longitude, System.currentTimeMillis(), 2000)); + Infomation.myInfo.setLocation(locData.latitude, locData.longitude); + } } @Override @@ -236,9 +252,7 @@ public class Main extends PiztorAct { requesLocation(Infomation.myInfo.gid); break; case FocuseButtonPress: - if( locData != null) { - mapMaker.UpdateLocationOverlay(locData, true); - } else mapMaker.InitMap(); + mapMaker.UpdateLocationOverlay(locData, true); break; case SuccessFetch: flushMap(); @@ -293,16 +307,13 @@ public class Main extends PiztorAct { actMgr.add(focusStatus, mapViewtouched, startStatus); actMgr.add(focusStatus, SuccessFetch, focusStatus); actMgr.add(focusStatus, Fetch, focusStatus); - //autodate = new Timer(); - flushMap(); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.bmapView); mapMaker = new MapMaker(mMapView, getApplicationContext()); + mapMaker.clearOverlay(mMapView); mapMaker.InitMap(); mLocClient = new LocationClient(this); locData = new LocationData(); - locData.latitude = 31.032247; - locData.longitude = 121.445937; mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); @@ -313,6 +324,10 @@ public class Main extends PiztorAct { mapMaker.UpdateLocationOverlay(locData, false); } + /* + * public boolean onTap(int index) { OverlayItem item = getItem(index); + * mCurItem = item; if () } + */ @Override protected void onStart() { super.onStart(); @@ -344,6 +359,7 @@ public class Main extends PiztorAct { @Override protected void onResume() { mapMaker.onResume(); + flushMap(); super.onResume(); } @@ -356,7 +372,6 @@ public class Main extends PiztorAct { @Override public void onStop() { super.onStop(); - //autodate.cancel(); } @Override @@ -397,4 +412,4 @@ public class Main extends PiztorAct { mMapView.onRestoreInstanceState(savedInstanceState); } -} +}
\ No newline at end of file diff --git a/client/Piztor/src/com/macaroon/piztor/MapMaker.java b/client/Piztor/src/com/macaroon/piztor/MapMaker.java index 895d409..4e30df6 100644 --- a/client/Piztor/src/com/macaroon/piztor/MapMaker.java +++ b/client/Piztor/src/com/macaroon/piztor/MapMaker.java @@ -48,173 +48,243 @@ import com.baidu.mapapi.map.MyLocationOverlay; import com.baidu.mapapi.map.OverlayItem; import com.baidu.mapapi.map.PopupClickListener; import com.baidu.mapapi.map.PopupOverlay; +import com.baidu.mapapi.search.MKPoiInfo; +import com.baidu.mapapi.search.MKPoiResult; import com.baidu.platform.comapi.basestruct.GeoPoint; -public class MapMaker extends Activity{ - +public class MapMaker extends Activity { + + // MapView controlling component private MapView mMapView = null; private MapController mMapController = null; - private static GeoPoint sjtuCenter = new GeoPoint((int)(31.032247 * 1E6), (int)(121.445937 * 1E6)); + + // Default center + private final static GeoPoint sjtuCenter = new GeoPoint((int)(31.032247 * 1E6), (int)(121.445937 * 1E6)); + + // Map layers and items private MyOverlay mOverlay = null; private OverlayItem curItem = null; - private ArrayList<OverlayItem> mItems = null; private LocationOverlay mLocationOverlay; + private ArrayList<OverlayItem> mItems = null; + private MapInfo preMapInfo = null; + + // marker layer + private MyOverlay markerOverlay; + private OverlayItem nowMarker = null; + + // private Context context; - private MKMapTouchListener mapTouchListener; - boolean isFirstLoc = true; - /** - * popups - */ + private MKMapTouchListener mapTouchListener; + + // Popup component private PopupOverlay popLay = null; private TextView popupText = null; private View viewCache = null; private View popupInfo = null; - public MapMaker(MapView mapView, Context c) { + /** + * Constructor + */ + public MapMaker(MapView mapView, Context cc) { + mMapView = mapView; mMapController = mMapView.getController(); + mMapController.setCenter(sjtuCenter); - mMapController.setZoom(17); + mMapController.setZoom(16); mMapController.setRotation(-22); mMapController.enableClick(true); - context = c; + + context = cc; mLocationOverlay = null; mOverlay = null; } + /** + * Layer for my location + */ public class LocationOverlay extends MyLocationOverlay { + public LocationOverlay(MapView mapView) { super(mapView); } } - public class MyOverlay extends ItemizedOverlay{ - public MyOverlay(Drawable defaultMarker, MapView mapView) { - super(defaultMarker, mapView); + /** + * Layer for items(other users) + */ + public class MyOverlay extends ItemizedOverlay { + + public MyOverlay(Drawable defaultMaker, MapView mapView) { + super(defaultMaker, mapView); } - + @Override - public boolean onTap(int index){ - Log.d("123", "Marker tap"); + public boolean onTap(int index) { + OverlayItem item = getItem(index); - popupText.setText("^ _ ^"); - Bitmap bitmap = BMapUtil.getBitmapFromView(popupInfo); - popLay.showPopup(bitmap,item.getPoint(),32); + //TODO + ///////////////////////////////////////////////////////// + popupText.setText("^_^"); + Bitmap bitmap = BMapUtil.getBitmapFromView(popupInfo); + popLay.showPopup(bitmap, item.getPoint(),32); + return true; } - - @Override - public boolean onTap(GeoPoint pt, MapView mMapView){ - Log.d("123", "Marker tap disappear"); - if (popLay != null){ - popLay.hidePop(); + @Override + public boolean onTap(GeoPoint pt, MapView mapView) { + + if(popLay != null) { + popLay.hidePop(); } - return false; - } - } - public void UpdateLocationOverlay(LocationData locationData, boolean hasAnimation) { - /** - * Update only location overlay - */ - mLocationOverlay.setData(locationData); - mMapView.refresh(); - if (hasAnimation || isFirstLoc) { - mMapController.animateTo(new GeoPoint((int)(locationData.latitude * 1E6), (int)(locationData.longitude * 1E6))); + return false; } - isFirstLoc = true; } - - public void InitMap() { - /** - * Initialize LocationOverlay - */ - Log.d("GPS", "init"); + + /** + * Initialize location layer + */ + public void InitLocationOverlay() { + mLocationOverlay = new LocationOverlay(mMapView); - //mLocationOverlay.setMarker(context.getResources().getDrawable(R.drawable.marker1)); LocationData locationData = new LocationData(); mLocationOverlay.setData(locationData); mMapView.getOverlays().add(mLocationOverlay); mLocationOverlay.enableCompass(); mMapView.refresh(); - mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView); - Log.d("123", "MapView initialized"); + } - /** - * Initialize pop up - */ - LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - Log.d("123", "OK 0"); + /** + * Initialize other users layer + */ + public void InitMyOverLay() { + + //TODO + ///////////////////////////////////////////////////////////////// + mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView); + markerOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.marker1), mMapView); + } + + /** + * Initialize popup + */ + public void InitPopup() { + + LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); viewCache = inflater.inflate(R.layout.custom_text_view, null); - Log.d("123", "OK 1"); - popupInfo = (View) viewCache.findViewById(R.id.popinfo); - Log.d("123", "OK 2"); - popupText = (TextView) viewCache.findViewById(R.id.textcache); - Log.d("123", "OK 3"); - Log.d("123", "Popup initialized"); + popupInfo = (View)viewCache.findViewById(R.id.popinfo); + popupText = (TextView)viewCache.findViewById(R.id.textcache); - PopupClickListener popListener = new PopupClickListener() { + @Override public void onClickedPopup(int index) { - // + // when the popup is clicked + if (index == 0) { + // do nothing + } + if (index == 1) { + // this is a marker and remove it + } } }; + popLay = new PopupOverlay(mMapView, popListener); + } + + + /** + * Initialize touch listener + */ + public void InitTouchListenr() { - /** - * Initialize touch listener - */ - /** - * TODO - */ mapTouchListener = new MKMapTouchListener() { + @Override - public void onMapClick(GeoPoint point) { - System.out.println("++++++++++++++++++++++++++++++++ SingleClick " - + point.getLatitudeE6() * 1E-6 + " " + point.getLongitudeE6() * 1E-6); + public void onMapLongClick(GeoPoint arg0) { + DrawMarker(arg0); + Log.d("marker", "draw a new marker"); } - + @Override - public void onMapDoubleClick(GeoPoint point) { - System.out.println("++++++++++++++++++++++++++++++++ DoubleClick " - + point.getLatitudeE6() * 1E-6 + " " + point.getLongitudeE6() * 1E-6); + public void onMapDoubleClick(GeoPoint arg0) { + // TODO Auto-generated method stub + } - + @Override - public void onMapLongClick(GeoPoint point) { - System.out.println("++++++++++++++++++++++++++++++++ LongClick " - + point.getLatitudeE6() * 1E-6 + " " + point.getLongitudeE6() * 1E-6); + public void onMapClick(GeoPoint arg0) { + // TODO Auto-generated method stub + } }; mMapView.regMapTouchListner(mapTouchListener); + } + + /** + * Initialize map + */ + public void InitMap() { + + InitLocationOverlay(); + InitMyOverLay(); + InitPopup(); + InitTouchListenr(); + } + /** + * Update location layer when new location is received + */ + public void UpdateLocationOverlay(LocationData locationData, boolean hasAnimation) { + + mLocationOverlay.setData(locationData); + mMapView.refresh(); + if (hasAnimation) { + mMapController.animateTo(new GeoPoint((int)(locationData.latitude * 1E6) + , (int)(locationData.longitude * 1E6))); + } } + /** + * Update to draw other users + */ public void UpdateMap(MapInfo mapInfo) { - /** - * Update location of others - */ - if (mOverlay != null && mOverlay.getAllItem().size() != 0) { - clearOverlay(mMapView); + + if (mapInfo != null) { + preMapInfo = mapInfo; + if (mOverlay != null && mOverlay.getAllItem().size() != 0) { + mOverlay.removeAll(); + } + mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView); + GeoPoint p; + Vector<UserInfo> allUsers = mapInfo.getVector(); + boolean flag = false; + for (int i =1; i < allUsers.size(); i++) { + // it's me! + if (allUsers.get(i).uid == Infomation.myInfo.uid) continue; + p = new GeoPoint((int)(allUsers.get(i).getLatitude() * 1E6), + (int)(allUsers.get(i).getLongitude()*1E6)); + curItem = new OverlayItem(p, "USERNAME HERE!!!!!", ""); + //TODO + //////////////////////////////////////////////////////////// + if (flag == false){ + flag = true; + curItem.setMarker(context.getResources().getDrawable(R.drawable.circle_green)); + } else { + curItem.setMarker(context.getResources().getDrawable(R.drawable.circle_red)); + } + mOverlay.addItem(curItem); + } + mItems = new ArrayList<OverlayItem>(); + mItems.addAll(mOverlay.getAllItem()); } - mOverlay = new MyOverlay(context.getResources().getDrawable(R.drawable.circle_red), mMapView); - //mMapView.refresh(); - GeoPoint p; - Vector<UserInfo> allUsers = mapInfo.getVector(); - System.out.println("SSSSSSSSSSSSSSSSize "+allUsers.size()); - for(int i = 0; i < allUsers.size(); i++) { - if (allUsers.get(i).uid == Infomation.myInfo.uid) continue; - p = new GeoPoint((int)(allUsers.get(i).getLatitude() * 1E6) - ,(int)(allUsers.get(i).getLongitude() * 1E6)); - curItem = new OverlayItem(p, "^_^", ""); - curItem.setMarker(context.getResources().getDrawable(R.drawable.circle_red)); - mOverlay.addItem(curItem); + if (nowMarker != null) { + Log.d("marker", "now marker is not null"); + mOverlay.addItem(nowMarker); } - mItems = new ArrayList<OverlayItem>(); - mItems.addAll(mOverlay.getAllItem()); if (mMapView != null) { if (mMapView.getOverlays() != null) { mMapView.getOverlays().add(mOverlay); @@ -222,19 +292,52 @@ public class MapMaker extends Activity{ } } } + + /** + * Update marker + */ + public void UpdateMarker() { + + mOverlay.addItem(nowMarker); + if (mMapView != null) { + mMapView.getOverlays().add(mOverlay); + mMapView.refresh(); + } + } + + /** + * Draw a marker + */ + public void DrawMarker(GeoPoint markerPoint) { + + nowMarker = new OverlayItem(markerPoint, "THIS IS A MARKER", ""); + nowMarker.setMarker(context.getResources().getDrawable(R.drawable.marker1)); + Log.d("marker", "new marker created"); + System.out.println("mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm " + markerPoint.getLatitudeE6() + " " + markerPoint.getLongitudeE6()); + + UpdateMap(preMapInfo); + } - + /** + * Remove all other users + */ public void clearOverlay(View view) { - mOverlay.removeAll(); - mMapView.refresh(); + + if(mOverlay != null && mOverlay.getAllItem().size() != 0) { + mOverlay.removeAll(); + mMapView.refresh(); + } } + /** + * Reset other users over lay + */ public void resetOverlay(View view) { + clearOverlay(null); mOverlay.addItem(mItems); - mMapView.refresh(); } - + @Override protected void onPause() { mMapView.onPause(); @@ -243,11 +346,11 @@ public class MapMaker extends Activity{ @Override protected void onResume() { mMapView.onResume(); - } + } @Override protected void onDestroy() { mMapView.destroy(); } + } - |