首次加载android后如何禁用谷歌地图当前位置跟踪
Posted
技术标签:
【中文标题】首次加载android后如何禁用谷歌地图当前位置跟踪【英文标题】:How to disable google map current location tracking after first loading android 【发布时间】:2015-09-14 20:13:22 【问题描述】:我是我当前位置的 google map api。我正在开发地图应用程序,它首先加载当前位置,然后用户可以指向地图上的任何位置。我的问题是,如果我正在移动,那么我的位置会一次又一次地向我当前的位置移动,并且用户无法在地图上指向所需的位置,因为它再次向其当前位置路由。下面给出了我的代码,其中我使用代码来初始化地图。您的帮助将不胜感激。
private static final LocationRequest REQUEST = LocationRequest.create()
.setInterval(8000) // 5 seconds
.setFastestInterval(16) // 16ms = 60fps
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
private void setUpMapIfNeeded()
if (mMap == null)
mMap = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
mMap.clear();
mMap.setOnMapClickListener(MyLocationActivity.this);
if (mMap != null)
mMap.setOnMapClickListener(MyLocationActivity.this);
mMap.setMyLocationEnabled(true);
mMap.setBuildingsEnabled(true);
mMap.getUiSettings().setCompassEnabled(false);
mMap.setIndoorEnabled(true);
mMap.setMapType(mMap.MAP_TYPE_NORMAL);
mMap.setTrafficEnabled(true);
private void setUpLocationClientIfNeeded()
if (mLocationClient == null)
mLocationClient = new LocationClient(getApplicationContext(),
connectionCallbacks, onConnectionFailedListener);
ConnectionCallbacks connectionCallbacks = new ConnectionCallbacks()
@Override
public void onDisconnected()
@Override
public void onConnected(Bundle connectionHint)
showLoadingDialog();
mLocationClient.requestLocationUpdates(REQUEST, locationListener);
;
OnConnectionFailedListener onConnectionFailedListener = new OnConnectionFailedListener()
@Override
public void onConnectionFailed(ConnectionResult result)
;
OnMyLocationChangeListener onMyLocationChangeListener = new OnMyLocationChangeListener()
@Override
public void onMyLocationChange(Location location)
;
LocationListener locationListener = new LocationListener()
@Override
public void onLocationChanged(Location location)
dismissLoadingDialog();
float diff = 0;
if (lastLocation != null)
diff = location.distanceTo(lastLocation);
if ((lastLocation == null) || (diff > 5))
LatLng latLng = new LatLng(location.getLatitude(),
location.getLongitude());
CameraPosition cameraPosition = new CameraPosition(latLng, 14,
45, 0);
CameraUpdate cameraUpdate = CameraUpdateFactory
.newCameraPosition(cameraPosition);
mMap.animateCamera(cameraUpdate, 25, null);
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.flag));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setZoomGesturesEnabled(true);
lastLocation = location;
;
【问题讨论】:
你初始化 lastLocation 了吗? 感谢@AditiParikh 的回复。是的,我正在初始化我的 lastLocation。请检查我的方法的结尾,这里我用我当前的坐标初始化它。 是的..当你的条件满足时它会被调用。尝试调试代码...检查您的条件是否满足。 【参考方案1】:@using_coding 可能有很多方法可以做到这一点,我没有检查这个代码,但它可能会在你的场景中帮助你。
1:在创建活动时进行布尔检查,例如:
boolean isFirstTime = true;
第一次在你的位置监听器中制作:
mMap.setMyLocationEnabled(true);
在本专栏中,让您的 isFirstTime 为假,并在该块中使 MyLocationEnabled
为假。这样,如果用户位置发生变化,那么它会检查布尔值,如果它是假的,那么它不会更新你当前的位置。
2:第二种方式不是解决方案,但你也可以这样做,比如你可以将location request
的时间设置为相对更多。
【讨论】:
以上是关于首次加载android后如何禁用谷歌地图当前位置跟踪的主要内容,如果未能解决你的问题,请参考以下文章
应用程序启动地图活动后,如何在 android 的地图中显示我的当前位置