获取当前位置GMaps

时间:2014-04-08 08:05:04

标签: android google-maps location

我为Android尝试了很多“获取当前位置”。但我认为他们中的大多数已经过时了,或者我根本就没有得到它。

我不想设置一个marker.addmarker(params ..)我想在Gmaps上使用蓝色默认点作为我的位置。在这里,我发现了一些关于这一点的事情,但是对于我的不好,它也不起作用。

Customize marker of myLocation Google Maps v2 Android

所以在我需要的第一行,当我的位置更新时,我的当前位置与监听器。我正在尝试这个(在真实设备上测试)。但是myLocation总是= null。

    //get GMaps Fragment
    mMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    mMap.setMyLocationEnabled(true);    //activate Blue dot

    myLocation = mMap.getMyLocation();  //Testing, but not working = null

    //Trying with LocationManager
    locManager =(LocationManager)getSystemService(this.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    String provider = locManager.getBestProvider(criteria, true);

    myLocation = locManager.getLastKnownLocation(provider);
    if(myLocation != null){
        double lat = myLocation.getLatitude();
        double lon = myLocation.getLongitude();
    }

    locManager.requestLocationUpdates(provider, 1000, 0, new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            myLocation = location;
        }

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

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    });

2 个答案:

答案 0 :(得分:0)

关注此http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/。然后在谷歌地图中放置您获得的纬度和经度(使用gps.getLatitude(),gps.getLongitude()),它将显示您当前的位置。

答案 1 :(得分:0)

尝试使用此代码,它可以在我的应用程序中使用:

private LocationManager locationManager;
private String provider;
double lat,lon;
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.locate);

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 1, this);
        if ( !locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
            gpsalert();
        }
        // Criteria to select location provider

        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        if (location != null) {

            Toast.makeText(getApplicationContext(), "Provider is available", Toast.LENGTH_SHORT).show();

        } else {
            Toast.makeText(getApplicationContext(), "Provider is not available", Toast.LENGTH_SHORT).show();
        }
    }
@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub

    String addr,city,country;
    lat=location.getLatitude();
    lon=location.getLongitude();

    //Toast.makeText(getApplicationContext(), "lat"+lat+"long"+lon, Toast.LENGTH_LONG).show();
    Geocoder geocoder;
    List<Address> addresses;
    geocoder = new Geocoder(this, Locale.getDefault());
    try {
        addresses = geocoder.getFromLocation(lat, lon, 1);

         addr = addresses.get(0).getAddressLine(0);
        city = addresses.get(0).getAddressLine(1);
         country = addresses.get(0).getAddressLine(2);
         t1.setText(addr+"\n"+city+"\n"+country);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub
    //Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show();
    //t1.setText("");
}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub
    //Toast.makeText(this, "Enabled provider " + provider, Toast.LENGTH_SHORT).show();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}
@Override
protected void onResume() {
    super.onResume();
    //locationManager.requestLocationUpdates(provider, 400, 1, this);
}
                                    // Remove LocationListener updates
@Override
protected void onPause() {
    super.onPause();
    //locationManager.removeUpdates(this);
}
public void gpsalert()
{
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your GPS seems to be disabled, do you want to enable it?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                   startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) {
                    dialog.cancel();
               }
           });
    final AlertDialog alert = builder.create();
    alert.show();
}