Skip to content

Commit ecf92e5

Browse files
committed
Merge pull request #14 from mg6maciej/feature/working_on_api_8_and_refactoring
Refactoring of demos. Change demo minSdkVersion to 8.
2 parents 6d41bbe + c9318e8 commit ecf92e5

5 files changed

Lines changed: 96 additions & 95 deletions

File tree

demo/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
android:versionName="1.0">
66

77
<uses-sdk
8-
android:minSdkVersion="14"
8+
android:minSdkVersion="8"
99
android:targetSdkVersion="17"/>
1010

1111
<permission
Lines changed: 23 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package com.google.maps.android.utils.demo;
22

3-
import android.util.JsonReader;
3+
import java.io.InputStream;
4+
import java.util.List;
5+
import java.util.Scanner;
6+
7+
import org.json.JSONArray;
8+
import org.json.JSONException;
9+
import org.json.JSONObject;
10+
411
import android.widget.Toast;
512

613
import com.google.android.gms.maps.CameraUpdateFactory;
714
import com.google.android.gms.maps.model.LatLng;
8-
import com.google.android.gms.maps.model.MarkerOptions;
9-
import com.google.maps.android.clustering.ClusterItem;
1015
import com.google.maps.android.clustering.ClusterManager;
1116
import com.google.maps.android.clustering.algo.SimpleDistanceBased;
12-
13-
import java.io.IOException;
14-
import java.io.InputStream;
15-
import java.io.InputStreamReader;
17+
import com.google.maps.android.utils.demo.model.MyItem;
1618

1719
public class BigClusteringDemoActivity extends BaseDemoActivity {
1820
private ClusterManager<MyItem> mClusterManager;
@@ -25,53 +27,25 @@ protected void startDemo() {
2527
mClusterManager.setAlgorithm(new SimpleDistanceBased<MyItem>());
2628

2729
getMap().setOnCameraChangeListener(mClusterManager);
28-
for (int i = 0; i < 10; i++) {
29-
try {
30-
readItems(i / 60d);
31-
} catch (IOException e) {
32-
Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
33-
}
30+
try {
31+
readItems();
32+
} catch (JSONException e) {
33+
Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
3434
}
3535
}
3636

37-
private void readItems(double offset) throws IOException {
37+
private void readItems() throws JSONException {
3838
InputStream inputStream = getResources().openRawResource(R.raw.radar_search);
39-
JsonReader reader = new JsonReader(new InputStreamReader(inputStream));
40-
41-
reader.beginArray();
42-
43-
while (reader.hasNext()) {
44-
reader.beginObject();
45-
double lat = 0, lng = 0;
46-
while (reader.hasNext()) {
47-
String name = reader.nextName();
48-
if ("lat".equals(name)) {
49-
lat = reader.nextDouble() + offset;
50-
} else if ("lng".equals(name)) {
51-
lng = reader.nextDouble() + offset;
52-
}
39+
List<MyItem> items = new MyItemReader().read(inputStream);
40+
for (int i = 0; i < 10; i++) {
41+
double offset = i / 60d;
42+
for (MyItem item : items) {
43+
LatLng position = item.getPosition();
44+
double lat = position.latitude + offset;
45+
double lng = position.longitude + offset;
46+
MyItem offsetItem = new MyItem(lat, lng);
47+
mClusterManager.addItem(offsetItem);
5348
}
54-
mClusterManager.addItem(new MyItem(lat, lng));
55-
reader.endObject();
56-
}
57-
reader.endArray();
58-
}
59-
60-
private class MyItem implements ClusterItem {
61-
private final LatLng mPosition;
62-
63-
public MyItem(double lat, double lng) {
64-
mPosition = new LatLng(lat, lng);
65-
}
66-
67-
@Override
68-
public LatLng getPosition() {
69-
return mPosition;
70-
}
71-
72-
@Override
73-
public MarkerOptions getMarkerOptions() {
74-
return new MarkerOptions().position(mPosition);
7549
}
7650
}
7751
}
Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
package com.google.maps.android.utils.demo;
22

3-
import android.util.JsonReader;
3+
import java.io.InputStream;
4+
import java.util.List;
5+
import java.util.Scanner;
6+
7+
import org.json.JSONArray;
8+
import org.json.JSONException;
9+
import org.json.JSONObject;
10+
411
import android.widget.Toast;
512

613
import com.google.android.gms.maps.CameraUpdateFactory;
714
import com.google.android.gms.maps.model.LatLng;
8-
import com.google.android.gms.maps.model.MarkerOptions;
9-
import com.google.maps.android.clustering.ClusterItem;
1015
import com.google.maps.android.clustering.ClusterManager;
1116
import com.google.maps.android.clustering.algo.SimpleDistanceBased;
12-
13-
import java.io.IOException;
14-
import java.io.InputStream;
15-
import java.io.InputStreamReader;
17+
import com.google.maps.android.utils.demo.model.MyItem;
1618

1719
public class ClusteringDemoActivity extends BaseDemoActivity {
1820
private ClusterManager<MyItem> mClusterManager;
@@ -28,49 +30,16 @@ protected void startDemo() {
2830

2931
try {
3032
readItems();
31-
} catch (IOException e) {
33+
} catch (JSONException e) {
3234
Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
3335
}
3436
}
3537

36-
private void readItems() throws IOException {
38+
private void readItems() throws JSONException {
3739
InputStream inputStream = getResources().openRawResource(R.raw.radar_search);
38-
JsonReader reader = new JsonReader(new InputStreamReader(inputStream));
39-
40-
reader.beginArray();
41-
42-
while (reader.hasNext()) {
43-
reader.beginObject();
44-
double lat = 0, lng = 0;
45-
while (reader.hasNext()) {
46-
String name = reader.nextName();
47-
if ("lat".equals(name)) {
48-
lat = reader.nextDouble();
49-
} else if ("lng".equals(name)) {
50-
lng = reader.nextDouble();
51-
}
52-
}
53-
mClusterManager.addItem(new MyItem(lat, lng));
54-
reader.endObject();
55-
}
56-
reader.endArray();
57-
}
58-
59-
private class MyItem implements ClusterItem {
60-
private final LatLng mPosition;
61-
62-
public MyItem(double lat, double lng) {
63-
mPosition = new LatLng(lat, lng);
64-
}
65-
66-
@Override
67-
public LatLng getPosition() {
68-
return mPosition;
69-
}
70-
71-
@Override
72-
public MarkerOptions getMarkerOptions() {
73-
return new MarkerOptions().position(mPosition);
40+
List<MyItem> items = new MyItemReader().read(inputStream);
41+
for (MyItem item : items) {
42+
mClusterManager.addItem(item);
7443
}
7544
}
7645
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.google.maps.android.utils.demo;
2+
3+
import java.io.InputStream;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
import java.util.Scanner;
7+
8+
import org.json.JSONArray;
9+
import org.json.JSONException;
10+
import org.json.JSONObject;
11+
12+
import com.google.maps.android.utils.demo.model.MyItem;
13+
14+
public class MyItemReader {
15+
16+
/*
17+
* This matches only once in whole input,
18+
* so Scanner.next returns whole InputStream as a String.
19+
* http://stackoverflow.com/a/5445161/2183804
20+
*/
21+
private static final String REGEX_INPUT_BOUNDARY_BEGINNING = "\\A";
22+
23+
public List<MyItem> read(InputStream inputStream) throws JSONException {
24+
List<MyItem> items = new ArrayList<MyItem>();
25+
String json = new Scanner(inputStream).useDelimiter(REGEX_INPUT_BOUNDARY_BEGINNING).next();
26+
JSONArray array = new JSONArray(json);
27+
for (int i = 0; i < array.length(); i++) {
28+
JSONObject object = array.getJSONObject(i);
29+
double lat = object.getDouble("lat");
30+
double lng = object.getDouble("lng");
31+
items.add(new MyItem(lat, lng));
32+
}
33+
return items;
34+
}
35+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.google.maps.android.utils.demo.model;
2+
3+
import com.google.android.gms.maps.model.LatLng;
4+
import com.google.android.gms.maps.model.MarkerOptions;
5+
import com.google.maps.android.clustering.ClusterItem;
6+
7+
public class MyItem implements ClusterItem {
8+
private final LatLng mPosition;
9+
10+
public MyItem(double lat, double lng) {
11+
mPosition = new LatLng(lat, lng);
12+
}
13+
14+
@Override
15+
public LatLng getPosition() {
16+
return mPosition;
17+
}
18+
19+
@Override
20+
public MarkerOptions getMarkerOptions() {
21+
return new MarkerOptions().position(mPosition);
22+
}
23+
}

0 commit comments

Comments
 (0)