Google Maps GeoLocation无效

时间:2017-04-04 09:19:24

标签: android google-maps geolocation location

我正在尝试在Android上的谷歌地图中启用自动位置功能,我添加了代码

mMap.setMyLocationEnabled(真); 。mMap.getUiSettings()setMyLocationButtonEnabled(真);

启用此功能,但位置的蓝点不会显示,任何帮助表示赞赏

Id   |  name
------------
 1   |  foo
 1   |  foo
 1   |  foo
 1   |  foo

2 个答案:

答案 0 :(得分:0)

private static final int REQUEST_FINE_LOCATION = 1001;

@Override
public void onMapReady(GoogleMap googleMap) {
  mMap = googleMap;

  // Add a marker in Sydney and move the camera
  mMap.addMarker(new MarkerOptions().position(new LatLng(54.581765, -5.937637)).title("Marker"));
  checkLocationPermission();
}

protected void checkLocationPermission() {
  if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED 
      || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    this.googleMap.setMyLocationEnabled(true);
  }
  else {
    requestFineLocationPermission();
  }
}

protected void requestFineLocationPermission() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
      Toast.makeToast(this, "Provide Location Permission", Toast.LENGTH_LONG).show();
    }
    else {
      requestPermissions(new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, REQUEST_FINE_LOCATION);
    }
  }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  switch (requestCode) {
    case REQUEST_FINE_LOCATION:
      checkLocationPermission();
  }
}

答案 1 :(得分:0)

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener =        new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
 mLastLocation = location;
if (mCurrLocationMarker != null) {
    mCurrLocationMarker.remove();
}

//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Current Position");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);

//move map camera
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,11));

//optionally, stop location updates if only current location is needed
if (mGoogleApiClient != null) {
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
    }

   }
};