
To achieve it, AndroidMapView have to be modified, to add function in onCreate() to handle Mode 0.
package com.AndroidMapper;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
public class AndroidMapView extends MapActivity {
 private TextView myLongitude, myLatitude;
 private CheckBox mySatellite;
 private MapView myMapView;
 private MapController myMapController;
 private void SetSatellite()
 {
  myMapView.setSatellite(mySatellite.isChecked());
 };
@Override
protected void onCreate(Bundle icicle) {
 // TODO Auto-generated method stub
 super.onCreate(icicle);
 setContentView(R.layout.mymapview);
 Bundle bundle = this.getIntent().getExtras();
     int Mode = bundle.getInt("Mode");
 myMapView = (MapView)findViewById(R.id.mapview);
 myMapController = myMapView.getController();
 myMapView.setBuiltInZoomControls(true);
 myLongitude = (TextView)findViewById(R.id.longitude);
 myLatitude = (TextView)findViewById(R.id.latitude);
 mySatellite = (CheckBox)findViewById(R.id.satellite);
 mySatellite.setOnClickListener(mySatelliteOnClickListener);
 SetSatellite();
 if(Mode == 0)
 {
  GeoPoint initGeoPoint = myMapView.getMapCenter();
  CenterLocation(initGeoPoint);
 }
 else if(Mode == 1)
 {
  int intLatitude = bundle.getInt("Latitude");
  int intLongitude = bundle.getInt("Longitude");
  GeoPoint initGeoPoint = new GeoPoint(intLatitude, intLongitude);
  CenterLocation(initGeoPoint);
 }
}
private void placeMarker(int markerLatitude, int markerLongitude)
{
 Drawable marker=getResources().getDrawable(
   android.R.drawable.ic_menu_myplaces);
 marker.setBounds(0, 0, marker.getIntrinsicWidth(),
   marker.getIntrinsicHeight());
 myMapView.getOverlays().add(new InterestingLocations(marker,
   markerLatitude, markerLongitude));
}
@Override
protected boolean isRouteDisplayed() {
 // TODO Auto-generated method stub
 return false;
}
private void CenterLocation(GeoPoint centerGeoPoint)
{
 myMapController.animateTo(centerGeoPoint);
 myLongitude.setText("Longitude: "+
  String.valueOf((float)centerGeoPoint.getLongitudeE6()/1000000));
 myLatitude.setText("Latitude: "+
  String.valueOf((float)centerGeoPoint.getLatitudeE6()/1000000));
 placeMarker(centerGeoPoint.getLatitudeE6(),
   centerGeoPoint.getLongitudeE6());
};
private CheckBox.OnClickListener mySatelliteOnClickListener =
   new CheckBox.OnClickListener(){
    public void onClick(View v) {
     // TODO Auto-generated method stub
     SetSatellite();
    }
};
class InterestingLocations extends ItemizedOverlay<OverlayItem>{
 private List<OverlayItem> locations =
  new ArrayList<OverlayItem>();
 private Drawable marker;
 public InterestingLocations(Drawable defaultMarker,
   int LatitudeE6, int LongitudeE6) {
  super(defaultMarker);
  // TODO Auto-generated constructor stub
  this.marker=defaultMarker;
  // create locations of interest
  GeoPoint myPlace = new GeoPoint(LatitudeE6,LongitudeE6);
  locations.add(new OverlayItem(myPlace ,
    "My Place", "My Place"));
  populate();
 }
 @Override
 protected OverlayItem createItem(int i) {
  // TODO Auto-generated method stub
  return locations.get(i);
 }
 @Override
 public int size() {
  // TODO Auto-generated method stub
  return locations.size();
 }
 @Override
 public void draw(Canvas canvas, MapView mapView,
   boolean shadow) {
  // TODO Auto-generated method stub
  super.draw(canvas, mapView, shadow);
 
  boundCenterBottom(marker);
 }
}
}
Other files are same as previous exercise.
 Download the files.
Download the files.
 
No comments:
Post a Comment