summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsjtufs <[email protected]>2013-08-28 22:20:33 +0800
committersjtufs <[email protected]>2013-08-28 22:20:33 +0800
commit85476a061cc854014d28b96690b160843fe95e60 (patch)
treeb88b188f10b872356bd981887f3b0641e4c8fc49
parent8e3c5382c8e96b6ef8f394fb49a89a68cc151d1c (diff)
fix #26 : add marker by long press
-rw-r--r--client/Piztor/.classpath8
-rw-r--r--client/Piztor/.project33
-rw-r--r--client/Piztor/AndroidManifest.xml4
-rw-r--r--client/Piztor/ic_launcher-web.pngbin0 -> 130248 bytes
-rw-r--r--client/Piztor/proguard-project.txt20
-rw-r--r--client/Piztor/project.properties14
-rw-r--r--client/Piztor/src/com/macaroon/piztor/MapMaker.java305
7 files changed, 274 insertions, 110 deletions
diff --git a/client/Piztor/.classpath b/client/Piztor/.classpath
index 1c0c6e1..2c647e0 100644
--- a/client/Piztor/.classpath
+++ b/client/Piztor/.classpath
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
- <classpathentry kind="lib" path="/home/goblin/piztor/client/Piztor/libs/baidumapapi_v2_1_3.jar"/>
- <classpathentry kind="lib" path="/home/goblin/piztor/client/Piztor/libs/locSDK_4.0.jar"/>
+ <classpathentry kind="lib" path="/home/fs/workspace/Piztor/libs/baidumapapi_v2_1_3.jar"/>
+ <classpathentry kind="lib" path="/home/fs/workspace/Piztor/libs/locSDK_4.0.jar"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
diff --git a/client/Piztor/.project b/client/Piztor/.project
new file mode 100644
index 0000000..97100ec
--- /dev/null
+++ b/client/Piztor/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Piztor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/client/Piztor/AndroidManifest.xml b/client/Piztor/AndroidManifest.xml
index c026975..f336200 100644
--- a/client/Piztor/AndroidManifest.xml
+++ b/client/Piztor/AndroidManifest.xml
@@ -57,13 +57,13 @@
<activity
android:name="com.macaroon.piztor.Main"
android:label="@string/title_activity_main"
- android:screenOrientation="sensor"
+ android:screenOrientation="portrait"
android:configChanges="orientation">
</activity>
<activity
android:name="com.macaroon.piztor.Settings"
android:label="@string/title_activity_settings"
- android:screenOrientation="sensor"
+ android:screenOrientation="portrait"
android:configChanges="orientation">
</activity>
<service
diff --git a/client/Piztor/ic_launcher-web.png b/client/Piztor/ic_launcher-web.png
new file mode 100644
index 0000000..3cd0ac2
--- /dev/null
+++ b/client/Piztor/ic_launcher-web.png
Binary files differ
diff --git a/client/Piztor/proguard-project.txt b/client/Piztor/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/client/Piztor/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/client/Piztor/project.properties b/client/Piztor/project.properties
new file mode 100644
index 0000000..b7c2081
--- /dev/null
+++ b/client/Piztor/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-10
diff --git a/client/Piztor/src/com/macaroon/piztor/MapMaker.java b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
index 895d409..8af00ea 100644
--- a/client/Piztor/src/com/macaroon/piztor/MapMaker.java
+++ b/client/Piztor/src/com/macaroon/piztor/MapMaker.java
@@ -48,173 +48,237 @@ 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();
+ for (int i = 0; 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
+ ////////////////////////////////////////////////////////////
+ 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 +286,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 +340,11 @@ public class MapMaker extends Activity{
@Override
protected void onResume() {
mMapView.onResume();
- }
+ }
@Override
protected void onDestroy() {
mMapView.destroy();
}
+
}
-