如何在googlemap上获取最后一个位置?

时间:2016-09-21 07:05:40

标签: android google-maps

代码:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private Location mLastLocation;
    private GoogleApiClient mGoogleApiClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mMap.setMyLocationEnabled(true);
        } else {
            Toast.makeText(getApplicationContext(), "oh, no", Toast.LENGTH_LONG).show();
        }
        Toast.makeText(getApplicationContext(), "test"+mLastLocation.getLatitude(), Toast.LENGTH_LONG).show(); #Here is what i want.
    }
}

我通过mMap.setMyLocationEnabled(true);获取我的位置后,

我想获得Latitude or Longitude的结果的mMap.setMyLocationEnabled(true);

但上面的代码已返回

        FATAL EXCEPTION: main
    Process: com.example.keepair.myapplication_maptest, PID: 15483
java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
at com.example.keepair.myapplication_maptest.MapsActivity.onMapReady(MapsActivity.java:48)

问题:有什么好方法或方法吗?

我不在乎你的答案是否说明了如何获得Latitude or Longitude结果的mMap.setMyLocationEnabled(true);

如果你的答案确实检查了最后的位置信息,那就没关系。

如果您的回答在googlemap上查看clicked point's coordinatessetMyLocation's coordinates,我也会很高兴。

请您告诉我?

1 个答案:

答案 0 :(得分:1)

docs

获取最后一个位置
public class MainActivity extends ActionBarActivity implements
        ConnectionCallbacks, OnConnectionFailedListener {
    ...
    @Override
    public void onConnected(Bundle connectionHint) {
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
        if (mLastLocation != null) {
            mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
            mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
        }
    }
}

希望它有所帮助!