map.setmylocationenabled(true) not working

匿名 (未验证) 提交于 2019-12-03 02:30:02

问题:

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.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!