Control Google Maps v2 for Android
https://github.com/kewang/map-controller-samples
You must know how to set up your Maps v2 from official article.
allprojects { repositories { maven { url "https://jitpack.io" } } }
dependencies { compile 'com.github.kewang:map-controller:v2.1.0' }
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
<dependency> <groupId>com.github.kewang</groupId> <artifactId>map-controller</artifactId> <version>v2.1.0</version> </dependency>
At first, you must use to MapController#initialize(Context) to initial Google Maps at android.app.Application and remember to update AndroidManifest.xml.
@Override public void onCreate() { super.onCreate(); try { MapController.initialize(this); } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); Toast.makeText(this, R.string.common_google_play_services_enable_text, Toast.Length_SHORT).show(); } }
When using it, You must create an instance to attach map from MapView / MapFragment's instance.
public class MainActivity extends Activity implements MapControllerReady { private MapView mv; private MapController mc; @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.main); mv = (MapView) findViewById(R.id.map); mc = new MapController(mv, this); // or use below statement // new MapController(mv, this); } @Override public void already(MapController controller) { controller.moveToMyLocation(); } }
Typically, you can use MapController#showMyLocation() to show your location.
You can use MapController#moveToMyLocation() to move your current location. Also you can use MapController#animateToMyLocation() to move smoothly.
You can use MapController#getMyLocation() to get your current location.
If you want to track your location at runtime and do something. You can use MapController#startTrackMyLocation() like this:
mc.startTrackMyLocation(new ChangeMyLocation() { @Override public void changed(GoogleMap map, Location location, boolean lastLocation) { Toast.makeText(TrackingMyLocation.this, location.toString(), Toast.LENGTH_SHORT).show(); } });
And don't forget to stop tracking MapController#stopTrackMyLocation() when you leave the activity or service.
If you want to move to specific location, you can use MapController#moveTo(LatLng) or MapController#animateTo(LatLng) like this:
LatLng latLng = new LatLng(25.03338, 121.56463); mc.animateTo(latLng, new ChangePosition() { @Override public void changed(GoogleMap map, CameraPosition position) { Toast.makeText(ShowSpecificLocation.this, position.toString(), Toast.LENGTH_SHORT).show(); } });
You can use MapController#addMarker(MarkerOptions) to add marker to map, like this:
mc.addMarker(opts, new MarkerCallback() { @Override public void invokedMarker(GoogleMap map, Marker marker) { Toast.makeText(AddMarker.this, marker.getId(), Toast.LENGTH_SHORT).show(); } });
You can also use MapController#addMarkers(ArrayList<MarkerOptions>) to add bulk markers to map.