WhereAmI

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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值