未出现覆盖且未指定位置
将覆盖和地图代码从 onCreat() 方法更改为 updateOverlays(),我只想获得正确的位置并在地图上正确设置覆盖
public class tabsActivity extends MapActivity
{
private static final String LIST_TAB_TAG = "Notification";
private static final String MAP_TAB_TAG = "Map";
private TabHost tabHost;
private ListView listView;
private MapView mapView;
MyLocationOverlay Compass;
double longitude , latitude;
MapController mc;
GeoPoint point;
protected LocationManager locationManager;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.maps_notification_tabs);
LocationListener listener = new LocationListener()
{
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider)
{
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location)
{
updateOverlays(location);
}
};
LocationManager locMgr = (LocationManager) getBaseContext().getSystemService(Context.LOCATION_SERVICE);
locMgr.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, listener);
// setup map view
mapView = (MapView) findViewById(R.id.mapview);
//Compass Setup
Compass = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(Compass);
final MapController control = mapView.getController();
}
public void updateOverlays(Location location)
{
mapView.setBuiltInZoomControls(true);
mapView.postInvalidate();
mapView.setSatellite(true);
mc = mapView.getController();
point = new GeoPoint((int) location.getLatitude() , (int) location.getLongitude());
mc.animateTo(point);
mc.setZoom(10);
mapView.invalidate();
OverlayItem overlayitem = new OverlayItem(point, "Hint", "Your Are Here");
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.black);
MapOverlays itemizedoverlay = new MapOverlays(drawable, this);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}