可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm working with Google Maps in my android app. I need to recenter the map to the client's current location. I used the following statement -
map.setmylocationenabled(true);
This displays a button on the top right but clicking that doesn't work.
The button click listener:
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { @Override public boolean onMyLocationButtonClick() { mMap.addMarker(new MarkerOptions().position(myLatLng).title("My Location")); mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLatLng, zoomLevel)); return false; } });
回答1:
Just take the code from my other answer here, and modify your button click listener to request another location:
mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() { @Override public boolean onMyLocationButtonClick() { if (mGoogleApiClient != null) { LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); } return false; } });
The code in onLocationChanged() will then re-center the camera position, and then un-register for location updates again:
@Override public void onLocationChanged(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.newLatLng(latLng)); mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11)); if (mGoogleApiClient != null) { LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); } }
回答2:
The last line was a solution for me:
myMap.setMyLocationEnabled(true); myMap.getUiSettings().setMyLocationButtonEnabled(true);
回答3:
Have you tried to get your latitude and longitude, after using setmylocationenabled(true)
?
example
gMap.setMyLocationEnabled(true); LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
you can now use your latitude and longitude, and animate the camera to the lat/lng location that you get.Hope it helps.