如何使用Google Maps API而非位置管理器获取用户当前位置坐标

时间:2013-11-26 14:58:32

标签: android google-maps google-maps-android-api-2

使用谷歌地图API v2,我知道myMap.setMyLocationEnabled(true);会让我在谷歌地图上显示用户位置,但我也希望这个位置的坐标显示在谷歌地图下方。我不想用

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

因为这看起来像是一种矫枉过正。我们已经有了用户的位置(地图上的指针),现在我只需要它的坐标值。 我怎么做到的?我找不到一些属性,如myLocation.getCurrentCoordinates()

6 个答案:

答案 0 :(得分:3)

尝试使用:

myMap.setOnMyLocationChangeListener(new OnMyLocationChangeListener() {

            @Override
            public void onMyLocationChange(Location location) {
                // TODO Auto-generated method stub

            }
        });

每次更改时,您都会收到该位置。如果您只是故意想要它,可以使用

Location location = myMap.getMyLocation()

答案 1 :(得分:1)

我最终使用LocationClient获取当前位置并依赖于getLastLocation()

private LocationClient locationClient;
private Location myLocation = null;
locationClient = new LocationClient(this, this, this);
locationClient.connect();

    @Override
public void onConnected(Bundle arg0) {
    myLocation = locationClient.getLastLocation();
}

这可能并不总是准确的,但我只需要一次并且不想使用locationChangedListeners。

答案 2 :(得分:0)

您可以使用Google Play服务获取用户位置。 http://developer.android.com/training/location/retrieve-current.html

位置比设备上提供GPS的位置更准确。

答案 3 :(得分:0)

试试这个:

GPSTracker tracker = new GPSTracker(this);
    if (tracker.canGetLocation() == false) {
        tracker.showSettingsAlert();
    } else {
        latitude = tracker.getLatitude();
        longitude = tracker.getLongitude();
    }

答案 4 :(得分:0)

//this might help u out

    enter code here
ar initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag =  new Boolean();

function initialize() {
  var myOptions = {
    zoom: 6,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);

  // Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  }
  // Browser doesn't support Geolocation
  else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }

  function handleNoGeolocation(errorFlag) {
    if (errorFlag == true) {
      alert("Geolocation service failed.");
      initialLocation = newyork;
    } else {
      alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
      initialLocation = siberia;
    }
    map.setCenter(initialLocation);
  }
}

答案 5 :(得分:0)

太晚了,但对于新的人来说:

GoogleMap gMap;

double lat = gMap.getCameraPosition().target.latitude;

double lng = gMap.getCameraPosition().target.longitude);

float zoom = gMap.getCameraPosition().zoom);

你获得了绝对的摄像头位置。