21
21
22
22
package com .example .mapdemo ;
23
23
24
+ import android .graphics .Color ;
25
+ import android .graphics .Point ;
26
+ import android .location .Location ;
27
+ import android .os .Bundle ;
28
+ import android .view .View ;
29
+ import android .widget .AdapterView ;
30
+ import android .widget .AdapterView .OnItemSelectedListener ;
31
+ import android .widget .ArrayAdapter ;
32
+ import android .widget .CheckBox ;
33
+ import android .widget .SeekBar ;
34
+ import android .widget .SeekBar .OnSeekBarChangeListener ;
35
+ import android .widget .Spinner ;
36
+
37
+ import androidx .appcompat .app .AppCompatActivity ;
38
+
24
39
import com .google .android .libraries .maps .CameraUpdateFactory ;
25
40
import com .google .android .libraries .maps .GoogleMap ;
26
41
import com .google .android .libraries .maps .GoogleMap .OnCircleClickListener ;
39
54
import com .google .android .libraries .maps .model .MarkerOptions ;
40
55
import com .google .android .libraries .maps .model .PatternItem ;
41
56
42
- import android .graphics .Color ;
43
- import android .graphics .Point ;
44
- import android .location .Location ;
45
- import android .os .Bundle ;
46
- import android .view .View ;
47
- import android .widget .AdapterView ;
48
- import android .widget .AdapterView .OnItemSelectedListener ;
49
- import android .widget .ArrayAdapter ;
50
- import android .widget .CheckBox ;
51
- import android .widget .SeekBar ;
52
- import android .widget .SeekBar .OnSeekBarChangeListener ;
53
- import android .widget .Spinner ;
54
-
55
- import androidx .appcompat .app .AppCompatActivity ;
56
-
57
57
import java .util .ArrayList ;
58
58
import java .util .Arrays ;
59
59
import java .util .List ;
@@ -83,20 +83,20 @@ public class CircleDemoActivity extends AppCompatActivity
83
83
private static final List <PatternItem > PATTERN_DASHED = Arrays .asList (DASH , GAP );
84
84
private static final List <PatternItem > PATTERN_MIXED = Arrays .asList (DOT , GAP , DOT , DASH , GAP );
85
85
86
- private GoogleMap mMap ;
86
+ private GoogleMap map ;
87
87
88
- private List <DraggableCircle > mCircles = new ArrayList <>(1 );
88
+ private List <DraggableCircle > circles = new ArrayList <>(1 );
89
89
90
- private int mFillColorArgb ;
91
- private int mStrokeColorArgb ;
90
+ private int fillColorArgb ;
91
+ private int strokeColorArgb ;
92
92
93
- private SeekBar mFillHueBar ;
94
- private SeekBar mFillAlphaBar ;
95
- private SeekBar mStrokeWidthBar ;
96
- private SeekBar mStrokeHueBar ;
97
- private SeekBar mStrokeAlphaBar ;
98
- private Spinner mStrokePatternSpinner ;
99
- private CheckBox mClickabilityCheckbox ;
93
+ private SeekBar fillHueBar ;
94
+ private SeekBar fillAlphaBar ;
95
+ private SeekBar strokeWidthBar ;
96
+ private SeekBar strokeHueBar ;
97
+ private SeekBar strokeAlphaBar ;
98
+ private Spinner strokePatternSpinner ;
99
+ private CheckBox clickabilityCheckbox ;
100
100
101
101
// These are the options for stroke patterns. We use their
102
102
// string resource IDs as identifiers.
@@ -109,57 +109,57 @@ public class CircleDemoActivity extends AppCompatActivity
109
109
};
110
110
111
111
private class DraggableCircle {
112
- private final Marker mCenterMarker ;
113
- private final Marker mRadiusMarker ;
114
- private final Circle mCircle ;
115
- private double mRadiusMeters ;
112
+ private final Marker centerMarker ;
113
+ private final Marker radiusMarker ;
114
+ private final Circle circle ;
115
+ private double radiusMeters ;
116
116
117
117
public DraggableCircle (LatLng center , double radiusMeters ) {
118
- mRadiusMeters = radiusMeters ;
119
- mCenterMarker = mMap .addMarker (new MarkerOptions ()
118
+ this . radiusMeters = radiusMeters ;
119
+ centerMarker = map .addMarker (new MarkerOptions ()
120
120
.position (center )
121
121
.draggable (true ));
122
- mRadiusMarker = mMap .addMarker (new MarkerOptions ()
122
+ radiusMarker = map .addMarker (new MarkerOptions ()
123
123
.position (toRadiusLatLng (center , radiusMeters ))
124
124
.draggable (true )
125
125
.icon (BitmapDescriptorFactory .defaultMarker (
126
126
BitmapDescriptorFactory .HUE_AZURE )));
127
- mCircle = mMap .addCircle (new CircleOptions ()
127
+ circle = map .addCircle (new CircleOptions ()
128
128
.center (center )
129
129
.radius (radiusMeters )
130
- .strokeWidth (mStrokeWidthBar .getProgress ())
131
- .strokeColor (mStrokeColorArgb )
132
- .fillColor (mFillColorArgb )
133
- .clickable (mClickabilityCheckbox .isChecked ()));
130
+ .strokeWidth (strokeWidthBar .getProgress ())
131
+ .strokeColor (strokeColorArgb )
132
+ .fillColor (fillColorArgb )
133
+ .clickable (clickabilityCheckbox .isChecked ()));
134
134
}
135
135
136
136
public boolean onMarkerMoved (Marker marker ) {
137
- if (marker .equals (mCenterMarker )) {
138
- mCircle .setCenter (marker .getPosition ());
139
- mRadiusMarker .setPosition (toRadiusLatLng (marker .getPosition (), mRadiusMeters ));
137
+ if (marker .equals (centerMarker )) {
138
+ circle .setCenter (marker .getPosition ());
139
+ radiusMarker .setPosition (toRadiusLatLng (marker .getPosition (), radiusMeters ));
140
140
return true ;
141
141
}
142
- if (marker .equals (mRadiusMarker )) {
143
- mRadiusMeters =
144
- toRadiusMeters (mCenterMarker .getPosition (), mRadiusMarker .getPosition ());
145
- mCircle .setRadius (mRadiusMeters );
142
+ if (marker .equals (radiusMarker )) {
143
+ radiusMeters =
144
+ toRadiusMeters (centerMarker .getPosition (), radiusMarker .getPosition ());
145
+ circle .setRadius (radiusMeters );
146
146
return true ;
147
147
}
148
148
return false ;
149
149
}
150
150
151
151
public void onStyleChange () {
152
- mCircle .setStrokeWidth (mStrokeWidthBar .getProgress ());
153
- mCircle .setStrokeColor (mStrokeColorArgb );
154
- mCircle .setFillColor (mFillColorArgb );
152
+ circle .setStrokeWidth (strokeWidthBar .getProgress ());
153
+ circle .setStrokeColor (strokeColorArgb );
154
+ circle .setFillColor (fillColorArgb );
155
155
}
156
156
157
157
public void setStrokePattern (List <PatternItem > pattern ) {
158
- mCircle .setStrokePattern (pattern );
158
+ circle .setStrokePattern (pattern );
159
159
}
160
160
161
161
public void setClickable (boolean clickable ) {
162
- mCircle .setClickable (clickable );
162
+ circle .setClickable (clickable );
163
163
}
164
164
}
165
165
@@ -182,32 +182,32 @@ protected void onCreate(Bundle savedInstanceState) {
182
182
super .onCreate (savedInstanceState );
183
183
setContentView (R .layout .circle_demo );
184
184
185
- mFillHueBar = ( SeekBar ) findViewById (R .id .fillHueSeekBar );
186
- mFillHueBar .setMax (MAX_HUE_DEGREES );
187
- mFillHueBar .setProgress (MAX_HUE_DEGREES / 2 );
185
+ fillHueBar = findViewById (R .id .fillHueSeekBar );
186
+ fillHueBar .setMax (MAX_HUE_DEGREES );
187
+ fillHueBar .setProgress (MAX_HUE_DEGREES / 2 );
188
188
189
- mFillAlphaBar = ( SeekBar ) findViewById (R .id .fillAlphaSeekBar );
190
- mFillAlphaBar .setMax (MAX_ALPHA );
191
- mFillAlphaBar .setProgress (MAX_ALPHA / 2 );
189
+ fillAlphaBar = findViewById (R .id .fillAlphaSeekBar );
190
+ fillAlphaBar .setMax (MAX_ALPHA );
191
+ fillAlphaBar .setProgress (MAX_ALPHA / 2 );
192
192
193
- mStrokeWidthBar = ( SeekBar ) findViewById (R .id .strokeWidthSeekBar );
194
- mStrokeWidthBar .setMax (MAX_WIDTH_PX );
195
- mStrokeWidthBar .setProgress (MAX_WIDTH_PX / 3 );
193
+ strokeWidthBar = findViewById (R .id .strokeWidthSeekBar );
194
+ strokeWidthBar .setMax (MAX_WIDTH_PX );
195
+ strokeWidthBar .setProgress (MAX_WIDTH_PX / 3 );
196
196
197
- mStrokeHueBar = ( SeekBar ) findViewById (R .id .strokeHueSeekBar );
198
- mStrokeHueBar .setMax (MAX_HUE_DEGREES );
199
- mStrokeHueBar .setProgress (0 );
197
+ strokeHueBar = findViewById (R .id .strokeHueSeekBar );
198
+ strokeHueBar .setMax (MAX_HUE_DEGREES );
199
+ strokeHueBar .setProgress (0 );
200
200
201
- mStrokeAlphaBar = ( SeekBar ) findViewById (R .id .strokeAlphaSeekBar );
202
- mStrokeAlphaBar .setMax (MAX_ALPHA );
203
- mStrokeAlphaBar .setProgress (MAX_ALPHA );
201
+ strokeAlphaBar = findViewById (R .id .strokeAlphaSeekBar );
202
+ strokeAlphaBar .setMax (MAX_ALPHA );
203
+ strokeAlphaBar .setProgress (MAX_ALPHA );
204
204
205
- mStrokePatternSpinner = ( Spinner ) findViewById (R .id .strokePatternSpinner );
206
- mStrokePatternSpinner .setAdapter (new ArrayAdapter <>(
205
+ strokePatternSpinner = findViewById (R .id .strokePatternSpinner );
206
+ strokePatternSpinner .setAdapter (new ArrayAdapter <>(
207
207
this , android .R .layout .simple_spinner_item ,
208
208
getResourceStrings (PATTERN_TYPE_NAME_RESOURCE_IDS )));
209
209
210
- mClickabilityCheckbox = ( CheckBox ) findViewById (R .id .toggleClickability );
210
+ clickabilityCheckbox = findViewById (R .id .toggleClickability );
211
211
212
212
SupportMapFragment mapFragment =
213
213
(SupportMapFragment ) getSupportFragmentManager ().findFragmentById (R .id .map );
@@ -223,45 +223,45 @@ private String[] getResourceStrings(int[] resourceIds) {
223
223
}
224
224
225
225
@ Override
226
- public void onMapReady (GoogleMap map ) {
226
+ public void onMapReady (GoogleMap googleMap ) {
227
227
// Override the default content description on the view, for accessibility mode.
228
- map .setContentDescription (getString (R .string .map_circle_description ));
228
+ googleMap .setContentDescription (getString (R .string .map_circle_description ));
229
229
230
- mMap = map ;
231
- mMap .setOnMarkerDragListener (this );
232
- mMap .setOnMapLongClickListener (this );
230
+ map = googleMap ;
231
+ map .setOnMarkerDragListener (this );
232
+ map .setOnMapLongClickListener (this );
233
233
234
- mFillColorArgb = Color .HSVToColor (
235
- mFillAlphaBar .getProgress (), new float []{mFillHueBar .getProgress (), 1 , 1 });
236
- mStrokeColorArgb = Color .HSVToColor (
237
- mStrokeAlphaBar .getProgress (), new float []{mStrokeHueBar .getProgress (), 1 , 1 });
234
+ fillColorArgb = Color .HSVToColor (
235
+ fillAlphaBar .getProgress (), new float []{fillHueBar .getProgress (), 1 , 1 });
236
+ strokeColorArgb = Color .HSVToColor (
237
+ strokeAlphaBar .getProgress (), new float []{strokeHueBar .getProgress (), 1 , 1 });
238
238
239
- mFillHueBar .setOnSeekBarChangeListener (this );
240
- mFillAlphaBar .setOnSeekBarChangeListener (this );
239
+ fillHueBar .setOnSeekBarChangeListener (this );
240
+ fillAlphaBar .setOnSeekBarChangeListener (this );
241
241
242
- mStrokeWidthBar .setOnSeekBarChangeListener (this );
243
- mStrokeHueBar .setOnSeekBarChangeListener (this );
244
- mStrokeAlphaBar .setOnSeekBarChangeListener (this );
242
+ strokeWidthBar .setOnSeekBarChangeListener (this );
243
+ strokeHueBar .setOnSeekBarChangeListener (this );
244
+ strokeAlphaBar .setOnSeekBarChangeListener (this );
245
245
246
- mStrokePatternSpinner .setOnItemSelectedListener (this );
246
+ strokePatternSpinner .setOnItemSelectedListener (this );
247
247
248
248
DraggableCircle circle = new DraggableCircle (SYDNEY , DEFAULT_RADIUS_METERS );
249
- mCircles .add (circle );
249
+ circles .add (circle );
250
250
251
251
// Move the map so that it is centered on the initial circle
252
- mMap .moveCamera (CameraUpdateFactory .newLatLngZoom (SYDNEY , 4.0f ));
252
+ map .moveCamera (CameraUpdateFactory .newLatLngZoom (SYDNEY , 4.0f ));
253
253
254
254
// Set up the click listener for the circle.
255
- map .setOnCircleClickListener (new OnCircleClickListener () {
255
+ googleMap .setOnCircleClickListener (new OnCircleClickListener () {
256
256
@ Override
257
257
public void onCircleClick (Circle circle ) {
258
258
// Flip the red, green and blue components of the circle's stroke color.
259
259
circle .setStrokeColor (circle .getStrokeColor () ^ 0x00ffffff );
260
260
}
261
261
});
262
262
263
- List <PatternItem > pattern = getSelectedPattern (mStrokePatternSpinner .getSelectedItemPosition ());
264
- for (DraggableCircle draggableCircle : mCircles ) {
263
+ List <PatternItem > pattern = getSelectedPattern (strokePatternSpinner .getSelectedItemPosition ());
264
+ for (DraggableCircle draggableCircle : circles ) {
265
265
draggableCircle .setStrokePattern (pattern );
266
266
}
267
267
}
@@ -284,7 +284,7 @@ private List<PatternItem> getSelectedPattern(int pos) {
284
284
@ Override
285
285
public void onItemSelected (AdapterView <?> parent , View view , int pos , long id ) {
286
286
if (parent .getId () == R .id .strokePatternSpinner ) {
287
- for (DraggableCircle draggableCircle : mCircles ) {
287
+ for (DraggableCircle draggableCircle : circles ) {
288
288
draggableCircle .setStrokePattern (getSelectedPattern (pos ));
289
289
}
290
290
}
@@ -307,21 +307,21 @@ public void onStartTrackingTouch(SeekBar seekBar) {
307
307
308
308
@ Override
309
309
public void onProgressChanged (SeekBar seekBar , int progress , boolean fromUser ) {
310
- if (seekBar == mFillHueBar ) {
311
- mFillColorArgb =
312
- Color .HSVToColor (Color .alpha (mFillColorArgb ), new float []{progress , 1 , 1 });
313
- } else if (seekBar == mFillAlphaBar ) {
314
- mFillColorArgb = Color .argb (progress , Color .red (mFillColorArgb ),
315
- Color .green (mFillColorArgb ), Color .blue (mFillColorArgb ));
316
- } else if (seekBar == mStrokeHueBar ) {
317
- mStrokeColorArgb =
318
- Color .HSVToColor (Color .alpha (mStrokeColorArgb ), new float []{progress , 1 , 1 });
319
- } else if (seekBar == mStrokeAlphaBar ) {
320
- mStrokeColorArgb = Color .argb (progress , Color .red (mStrokeColorArgb ),
321
- Color .green (mStrokeColorArgb ), Color .blue (mStrokeColorArgb ));
310
+ if (seekBar == fillHueBar ) {
311
+ fillColorArgb =
312
+ Color .HSVToColor (Color .alpha (fillColorArgb ), new float []{progress , 1 , 1 });
313
+ } else if (seekBar == fillAlphaBar ) {
314
+ fillColorArgb = Color .argb (progress , Color .red (fillColorArgb ),
315
+ Color .green (fillColorArgb ), Color .blue (fillColorArgb ));
316
+ } else if (seekBar == strokeHueBar ) {
317
+ strokeColorArgb =
318
+ Color .HSVToColor (Color .alpha (strokeColorArgb ), new float []{progress , 1 , 1 });
319
+ } else if (seekBar == strokeAlphaBar ) {
320
+ strokeColorArgb = Color .argb (progress , Color .red (strokeColorArgb ),
321
+ Color .green (strokeColorArgb ), Color .blue (strokeColorArgb ));
322
322
}
323
323
324
- for (DraggableCircle draggableCircle : mCircles ) {
324
+ for (DraggableCircle draggableCircle : circles ) {
325
325
draggableCircle .onStyleChange ();
326
326
}
327
327
}
@@ -342,7 +342,7 @@ public void onMarkerDrag(Marker marker) {
342
342
}
343
343
344
344
private void onMarkerMoved (Marker marker ) {
345
- for (DraggableCircle draggableCircle : mCircles ) {
345
+ for (DraggableCircle draggableCircle : circles ) {
346
346
if (draggableCircle .onMarkerMoved (marker )) {
347
347
break ;
348
348
}
@@ -353,19 +353,19 @@ private void onMarkerMoved(Marker marker) {
353
353
public void onMapLongClick (LatLng point ) {
354
354
// We know the center, let's place the outline at a point 3/4 along the view.
355
355
View view = getSupportFragmentManager ().findFragmentById (R .id .map ).getView ();
356
- LatLng radiusLatLng = mMap .getProjection ().fromScreenLocation (new Point (
356
+ LatLng radiusLatLng = map .getProjection ().fromScreenLocation (new Point (
357
357
view .getHeight () * 3 / 4 , view .getWidth () * 3 / 4 ));
358
358
359
359
// Create the circle.
360
360
DraggableCircle circle = new DraggableCircle (point , toRadiusMeters (point , radiusLatLng ));
361
- mCircles .add (circle );
361
+ circles .add (circle );
362
362
}
363
363
364
364
public void toggleClickability (View view ) {
365
365
boolean clickable = ((CheckBox ) view ).isChecked ();
366
366
// Set each of the circles to be clickable or not, based on the
367
367
// state of the checkbox.
368
- for (DraggableCircle draggableCircle : mCircles ) {
368
+ for (DraggableCircle draggableCircle : circles ) {
369
369
draggableCircle .setClickable (clickable );
370
370
}
371
371
}
0 commit comments