Java 更新谷歌地图上的位置
我想知道更新我在地图上的位置的最佳/建议方法是什么。我试图在我的位置发生变化时更新它,并在地图上为我走过的路线画一条线。我曾考虑使用一个线程,它每5秒调用一次我的定位方法(?),但我怀疑这是否是一种推荐的方法 问题:更新我在地图上的位置的最佳方法,以及如何为我所走的路径绘制路线 如果有人能给我指出正确的方向,我将不胜感激。您可以使用图书馆。它非常有用,而且可以定制。您可以设置获取位置的频率。只需保留以前位置的参考。定义Java 更新谷歌地图上的位置,java,android,multithreading,google-maps,Java,Android,Multithreading,Google Maps,我想知道更新我在地图上的位置的最佳/建议方法是什么。我试图在我的位置发生变化时更新它,并在地图上为我走过的路线画一条线。我曾考虑使用一个线程,它每5秒调用一次我的定位方法(?),但我怀疑这是否是一种推荐的方法 问题:更新我在地图上的位置的最佳方法,以及如何为我所走的路径绘制路线 如果有人能给我指出正确的方向,我将不胜感激。您可以使用图书馆。它非常有用,而且可以定制。您可以设置获取位置的频率。只需保留以前位置的参考。定义LocationTracker的全局实例,然后按如下方式进行设置 privat
LocationTracker
的全局实例,然后按如下方式进行设置
private void setupLocationTracker() {
TrackerSettings settings = new TrackerSettings()
.setUseGPS(true)
.setUseNetwork(true)
.setUsePassive(true)
.setTimeBetweenUpdates(1000 * 5) //You can set it according to your needs
.setMetersBetweenUpdates(10); //Or you can set this too.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationTracker = new LocationTracker(this, settings) {
@Override
public void onLocationFound(@NonNull Location location) {
LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
//if(latLngList.size() == 0) {
mMap.addMarker(new MarkerOptions().position(currentLocation).title("Current Location"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLocation, 15.0f), 3000, null);
//Write your function to draw line
drawLine(previousLocation, currentLocation);
previousLocation = currentLocation;
}
@Override
public void onTimeout() {
Log.d("MESSAGE", "Time out");
}
};
}
然后随时随地调用
locationTraker.startListening()
和locationTracker.stopListening()
。只是别忘了调用stopListening()
内部onPause()
使用OnLocationChanged
监听器。使用线程与OnLocationChanged监听器的组合我想这个方法已经过时了?[