11package 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+
411import android .widget .Toast ;
512
613import com .google .android .gms .maps .CameraUpdateFactory ;
714import com .google .android .gms .maps .model .LatLng ;
8- import com .google .android .gms .maps .model .MarkerOptions ;
9- import com .google .maps .android .clustering .ClusterItem ;
1015import com .google .maps .android .clustering .ClusterManager ;
1116import 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
1719public 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}
0 commit comments