From 0a8315a94d8ed1252f3f96d4ca41ddc632c3bc98 Mon Sep 17 00:00:00 2001 From: Goblin911 Date: Wed, 28 Aug 2013 02:38:11 +0800 Subject: now can run!!! --- .../Piztor/src/com/macaroon/piztor/MapMaker.java | 165 +++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 client/Piztor/src/com/macaroon/piztor/MapMaker.java (limited to 'client/Piztor/src/com/macaroon/piztor/MapMaker.java') 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 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 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(); + 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(); + } +} + -- cgit v1.2.3