开发者

How to find Current Location' Latitude Longitude

I want to develope an app in which when i start the app it will first give me Latitude and Longitude of my current location. Here is my code:

   LocationListener locLis=new LocationListener() {

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}      
@Override
public void onProviderEnabled(String provider) {}           
@Override
public void onProviderDisabled(String provider) {}  
@Override
public void onLocationChanged(Location location) 
{
// TODO Auto-generated method stub
   Double lat=location.getLatitude();
   Double lon=location.getLongitude();
   Log.i("Latitude=="+lat,"=="+lon);

}
};
 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0,0, locLis);

I use ACCESS_FINE_LOCATION in the manifest file. But when i start the app there is no latitude and longitude it fou开发者_StackOverflownd. Why? If i change the location's latitude longitude from the command prompt then it will show the updated latitude and longitude. Please anyone help me


Take this code and enjoy

public void find_Location(Context con) { Log.d("Find Location", "in find_location"); this.con=con; String location_context = Context.LOCATION_SERVICE; locationManager = (LocationManager)con.getSystemService(location_context);

    List<String> providers = locationManager.getProviders(true);
   for (String provider : providers) 
   {
       locationManager.requestLocationUpdates(provider, 1000, 0,new LocationListener()
       {
           public void onLocationChanged(Location location) {}
           public void onProviderDisabled(String provider){}
           public void onProviderEnabled(String provider){}
           public void onStatusChanged(String provider, int status,Bundle  extras){}
       });
       Location location = locationManager.getLastKnownLocation(provider);
       if (location != null)
       {
           latitude = location.getLatitude();
           longitude = location.getLongitude();
           addr=ConvertPointToLocation(latitude,longitude);
                   String temp_c=SendToUrl(addr);

       } 
   }
}

public String ConvertPointToLocation(double pointlat,double pointlog) {

    String address = "";
    Geocoder geoCoder = new Geocoder(con,
            Locale.getDefault());
    try {
        List<Address> addresses = geoCoder.getFromLocation(pointlat,pointlog, 1);
        if (addresses.size() > 0) {
            for (int index = 0; index < addresses.get(0)
                    .getMaxAddressLineIndex(); index++)
                address += addresses.get(0).getAddressLine(index) + " ";
        }
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    return address;
}  


Your code is set to display the location only when it changes. I think in order to display it when the app starts, you should try putting it in onProviderEnabled() or some other initialization routine.


You should do like this

            public class MyLocationListener implements LocationListener
{

    @Override
    public void onLocationChanged(Location loc)

    {}

            @Override
    public void onProviderDisabled(String provider)
    {}
            @Override
    public void onProviderEnabled(String provider)
    {}
             @Override
            public void onStatusChanged(String provider, int status, Bundle extras)
    {

    }
       }
     mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();

     mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜