package com.paad.WhereAmI;
import java.io.IOException; import java.util.List; import java.util.Locale;
import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay;
import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView;
public class WhereAmI extends MapActivity { /** Called when the activity is first created. */ public MapController mapController; public MyPositionOverlay myPosition; public MapView myMapView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager locationManager; String context=Context.LOCATION_SERVICE; locationManager=(LocationManager)getSystemService(context); myMapView=(MapView)findViewById(R.id.myMapView); mapController=myMapView.getController(); myMapView.setSatellite(true); myMapView.setStreetView(true); myMapView.displayZoomControls(false); mapController.setZoom(17); myPosition=new MyPositionOverlay(); List<Overlay> overlays=myMapView.getOverlays(); overlays.add(myPosition); Criteria criteria =new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(false); criteria.setPowerRequirement(Criteria.POWER_LOW); String provider=locationManager.getBestProvider(criteria, true); Location location=locationManager.getLastKnownLocation(provider); updateWithNewLocation(location); locationManager.requestLocationUpdates(provider, 3000, 0, locationListener); } //TextView text;
private void updateWithNewLocation(Location location) { // TODO Auto-generated method stub
String latLongString; TextView myLocationText = (TextView)findViewById(R.id.myLocationText); String addressString="no address found/n"; if(location!=null){ myPosition.setLocation(location); Double geoLat=location.getLatitude()*1E6; Double geoLng=location.getLongitude()*1E6; GeoPoint point=new GeoPoint(geoLat.intValue(),geoLng.intValue()); mapController.animateTo(point); double lat=location.getLatitude(); double lng=location.getLongitude(); latLongString="Lat :"+lat+"/nLong :"+lng; double latitude=location.getLatitude(); double longitude=location.getLongitude(); Geocoder gc=new Geocoder(this,Locale.getDefault()); try{ List<Address> addresses=gc.getFromLocation(latitude, longitude, 1); StringBuilder sb=new StringBuilder(); if(addresses.size()>0){ Address address=addresses.get(0); for(int i=0;i<address.getMaxAddressLineIndex();i++) sb.append(address.getAddressLine(i)).append("/n"); sb.append(address.getLocality()).append("/n"); sb.append(address.getPostalCode()).append("/n"); sb.append(address.getCountryName()); addressString=sb.toString(); } }catch(IOException e){} }else{ latLongString="Location not found./n"; } myLocationText.setText("Your current location is:/n"+latLongString+ "/n"+addressString); } private final LocationListener locationListener=new LocationListener(){ public void onLocationChanged(Location location) {updateWithNewLocation(location);} public void onProviderDisabled(String provider) {updateWithNewLocation(null);} public void onProviderEnabled(String provider){} public void onStatusChanged(String provider,int status,Bundle extras){} }; protected boolean isRouteDisplayed(){ return false; } private static final int ZOOM_IN=Menu.FIRST; private static final int ZOOM_OUT=Menu.FIRST+1; public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); menu.add(0, ZOOM_IN, Menu.NONE, "Zoom In"); menu.add(0, ZOOM_OUT, Menu.NONE, "Zoom Out"); return true; } public boolean onOptionsItemSelected(MenuItem item){ super.onOptionsItemSelected(item); switch(item.getItemId()){ case (ZOOM_IN): mapController.zoomIn(); return true; case (ZOOM_OUT): mapController.zoomOut(); return true; } return true; } }
|