Java 更新谷歌地图上的位置

Java 更新谷歌地图上的位置,java,android,multithreading,google-maps,Java,Android,Multithreading,Google Maps,我想知道更新我在地图上的位置的最佳/建议方法是什么。我试图在我的位置发生变化时更新它,并在地图上为我走过的路线画一条线。我曾考虑使用一个线程,它每5秒调用一次我的定位方法(?),但我怀疑这是否是一种推荐的方法 问题:更新我在地图上的位置的最佳方法,以及如何为我所走的路径绘制路线 如果有人能给我指出正确的方向,我将不胜感激。您可以使用图书馆。它非常有用,而且可以定制。您可以设置获取位置的频率。只需保留以前位置的参考。定义LocationTracker的全局实例,然后按如下方式进行设置 privat

我想知道更新我在地图上的位置的最佳/建议方法是什么。我试图在我的位置发生变化时更新它,并在地图上为我走过的路线画一条线。我曾考虑使用一个线程,它每5秒调用一次我的定位方法(?),但我怀疑这是否是一种推荐的方法

问题:更新我在地图上的位置的最佳方法,以及如何为我所走的路径绘制路线

如果有人能给我指出正确的方向,我将不胜感激。

您可以使用图书馆。它非常有用,而且可以定制。您可以设置获取位置的频率。只需保留以前位置的参考。定义
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监听器的组合我想这个方法已经过时了?[