如何在Android中获取位置?

时间:2014-03-27 16:59:13

标签: java android google-maps

我已经得到了代码来获取地址。但我不知道有一个真正的LATITUDE和LONGITUDE。 如何更改我的代码?这样我就可以使用真正的代码了。 Thanks.ThanksThanksThanksThanksThanksThanksThanks

package ie.wit.mybook;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

import com.google.android.gms.maps.GoogleMap;
 import ie.wit.mybook.*;
import android.app.Activity;
  import android.location.Address;
  import android.location.Geocoder;
      import android.os.Bundle;
    import android.widget.TextView;
   import android.widget.Toast;

    public class AdressGet extends Activity {

    double LATITUDE=52.7;
    double LONGITUDE=-7.12;
    GPSHelper mylo;
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.adressget);
   TextView myLatitude = (TextView)findViewById(R.id.mylatitude);
   TextView myLongitude = (TextView)findViewById(R.id.mylongitude);
   TextView myAddress = (TextView)findViewById(R.id.myaddress);

   myLatitude.setText("Latitude: " + String.valueOf(LATITUDE));
   myLongitude.setText("Longitude: " + String.valueOf(LONGITUDE));

   Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);

   try {
   List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);

  if(addresses != null) {
    Address returnedAddress = addresses.get(0);
   StringBuilder strReturnedAddress = new StringBuilder("Address:\n");
   for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
   }
    myAddress.setText(strReturnedAddress.toString());
  }
  else{
   myAddress.setText("No Address returned!");
  }
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  myAddress.setText("Canont get Address!");
}

  }
}

4 个答案:

答案 0 :(得分:1)

如果您需要获得真实坐标,则需要使用LocationListener。试试这个:http://www.vogella.com/tutorials/AndroidLocationAPI/article.html

答案 1 :(得分:0)

非常快速的代码,没有太多时间:)

locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
providers = locationManager.getProviders(true);

//Choose whatever provider (GPS / Network) you want, in this case i'll go ahead and choose network, but build in a Check If GPS / Network is enabled statement

List<String>String provider = providers.get(1);
Location location = locationManager.getLastKnownLocation(provider);

答案 2 :(得分:0)

第二个选项是使用此处所述的当前Play服务API以使其完整,但ThomQs答案更容易。 http://developer.android.com/training/location/retrieve-current.html

答案 3 :(得分:0)

此处方法

// Get the last known location from all providers
// return best reading is as accurate as minAccuracy and
// was taken no longer then minTime milliseconds ago

private Location bestLastKnownLocation(float minAccuracy, long minTime) {
    mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    Location bestResult = null;
    float bestAccuracy = Float.MAX_VALUE;
    long bestTime = Long.MIN_VALUE;

    List<String> matchingProviders = mLocationManager.getAllProviders();

    for (String provider : matchingProviders) {

        Location location = mLocationManager.getLastKnownLocation(provider);

        if (location != null) {

            float accuracy = location.getAccuracy();
            long time = location.getTime();

            if (accuracy < bestAccuracy) {

                bestResult = location;
                bestAccuracy = accuracy;
                bestTime = time;

            }
        }
    }

    // Return best reading or null
    if (bestAccuracy > minAccuracy || bestTime < minTime) {
        return null;
    } else {
        return bestResult;
    }
}

然后,使用Location对象,使用

location.getLongitude();

location.getLatitude();