summaryrefslogtreecommitdiff
path: root/client/Piztor/src/com/macaroon/piztor/MapMaker.java
diff options
context:
space:
mode:
Diffstat (limited to 'client/Piztor/src/com/macaroon/piztor/MapMaker.java')
-rw-r--r--client/Piztor/src/com/macaroon/piztor/MapMaker.java165
1 files changed, 165 insertions, 0 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/MapMaker.java b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
new file mode 100644
index 0000000..bdc3554
--- /dev/null
+++ b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
@@ -0,0 +1,165 @@
+package com.macaroon.piztor;
+
+import java.util.ArrayList;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.Vector;
+import android.util.Log;
+import android.util.AttributeSet;
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.drawable.Drawable;
+import android.widget.FrameLayout;
+import android.widget.Toast;
+import android.view.View.OnClickListener;
+import android.widget.RadioGroup;
+import android.widget.RadioGroup.OnCheckedChangeListener;
+
+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.LocationData;
+import com.baidu.mapapi.BMapManager;
+import com.baidu.mapapi.MKGeneralListener;
+import com.baidu.mapapi.map.ItemizedOverlay;
+import com.baidu.mapapi.map.MKMapViewListener;
+import com.baidu.mapapi.map.MapController;
+import com.baidu.mapapi.map.MapPoi;
+import com.baidu.mapapi.map.MapView;
+import com.baidu.mapapi.map.MyLocationOverlay;
+import com.baidu.mapapi.map.OverlayItem;
+import com.baidu.mapapi.map.PopupOverlay;
+import com.baidu.platform.comapi.basestruct.GeoPoint;
+
+public class MapMaker extends Activity{
+
+ private MapView mMapView = null;
+ private MapController mMapController = null;
+ private static GeoPoint sjtuCenter = new GeoPoint((int)(31.032247 * 1E6), (int)(121.445937 * 1E6));
+ private MyOverlay mOverlay = null;
+ private MapView.LayoutParams layoutParam = null;
+ private OverlayItem curItem = null;
+ private ArrayList<OverlayItem> mItems = null;
+ private LocationOverlay mLocationOverlay;
+ private Context context;
+
+ public MapMaker(MapView mapView, Context c) {
+ mMapView = mapView;
+ mMapController = mMapView.getController();
+ mMapController.setCenter(sjtuCenter);
+ mMapController.setZoom(17);
+ mMapController.setRotation(-22);
+ mMapController.enableClick(true);
+ context = c;
+ mLocationOverlay = null;
+ mOverlay = null;
+ }
+
+ 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);
+ }
+ }
+
+ public void UpdateLocationOverlay(LocationData locationData, boolean hasAnimation) {
+ /**
+ * Update only location overlay
+ */
+ mLocationOverlay.setData(locationData);
+ mMapView.refresh();
+ if (hasAnimation) {
+ mMapController.animateTo(new GeoPoint((int)(locationData.latitude * 1E6), (int)(locationData.longitude * 1E6)));
+ }
+ }
+
+ public void InitMap() {
+ Log.d("GPS", "init");
+ 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();
+ }
+
+ public void UpdateMap(MapInfo mapInfo) {
+ /**
+ * Update Location Overlay
+ */
+ GeoPoint location = mapInfo.getMyInfo().getLocation();
+ LocationData locationData = new LocationData();
+ locationData.latitude = location.getLatitudeE6() / 1e6;
+ locationData.longitude = location.getLongitudeE6() / 1e6;
+ mLocationOverlay.setData(locationData);
+ mMapView.refresh();
+
+ /**
+ * Update location of others
+ */
+ mOverlay.removeAll();
+ //mMapView.refresh();
+ GeoPoint p;
+ Vector<UserInfo> allUsers = mapInfo.getVector();
+
+ for(int i = 0; i < allUsers.size(); i++) {
+ 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.marka));
+ mOverlay.addItem(curItem);
+ }
+ mItems = new ArrayList<OverlayItem>();
+ mItems.addAll(mOverlay.getAllItem());
+ mMapView.getOverlays().add(mOverlay);
+ mMapView.refresh();
+ }
+
+
+ public void clearOverlay(View view) {
+ mOverlay.removeAll();
+ mMapView.refresh();
+ }
+
+ public void resetOverlay(View view) {
+ clearOverlay(null);
+ mOverlay.addItem(mItems);
+ mMapView.refresh();
+ }
+
+ @Override
+ protected void onPause() {
+ mMapView.onPause();
+ }
+
+ @Override
+ protected void onResume() {
+ mMapView.onResume();
+ }
+
+ @Override
+ protected void onDestroy() {
+ mMapView.destroy();
+ }
+}
+