Easy drawing current location and compass on the MapView, using MyLocationOverlay.
com.google.android.maps provide a usefull classMyLocationOverlay to draw current location (and also compass) on the Map.

To use MyLocationOverlay is simply:
The main.xml and MyItemizedOverlay.java have no change, you can copy the code from previous post Using ItemizedOverlay to add marker on MapView.
AndroidMapViewActivity.java

To use MyLocationOverlay is simply:
- add a object of MyLocationOverlay in your mapView Overlays
- call enableMyLocation() and/or enableCompass() in onResume()
- call disableMyLocation() and/or disableCompass() onPause()
- add "android.permission.ACCESS_FINE_LOCATION" in AndroidManifest.xml
The main.xml and MyItemizedOverlay.java have no change, you can copy the code from previous post Using ItemizedOverlay to add marker on MapView.
AndroidMapViewActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| package com.AndroidMapView;import com.google.android.maps.GeoPoint;import com.google.android.maps.MapActivity;import com.google.android.maps.MapView;import com.google.android.maps.MyLocationOverlay;import android.graphics.drawable.Drawable;import android.os.Bundle;public class AndroidMapViewActivity extends MapActivity { MyItemizedOverlay myItemizedOverlay = null; MyLocationOverlay myLocationOverlay = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on); int markerWidth = marker.getIntrinsicWidth(); int markerHeight = marker.getIntrinsicHeight(); marker.setBounds(0, markerHeight, markerWidth, 0); myItemizedOverlay = new MyItemizedOverlay(marker); mapView.getOverlays().add(myItemizedOverlay); GeoPoint myPoint1 = new GeoPoint(0*1000000, 0*1000000); myItemizedOverlay.addItem(myPoint1, "myPoint1", "myPoint1"); GeoPoint myPoint2 = new GeoPoint(50*1000000, 50*1000000); myItemizedOverlay.addItem(myPoint2, "myPoint2", "myPoint2"); myLocationOverlay = new MyLocationOverlay(this, mapView); mapView.getOverlays().add(myLocationOverlay); mapView.postInvalidate(); } @Override protected boolean isLocationDisplayed() { // TODO Auto-generated method stub return false; } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); myLocationOverlay.enableMyLocation(); myLocationOverlay.enableCompass(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); myLocationOverlay.disableMyLocation(); myLocationOverlay.disableCompass(); } }akmwww.cdacians.com |
No comments:
Post a Comment