android - 顺利更新谷歌地图上的标记位置

标签 android google-maps

我正在android应用程序中开发订单跟踪模块,在这个模块中,我实现了一个源位置标记和目的地位置标记,源位置是固定的,而目的地位置标记是不断变化的,每当位置改变时,但是当位置改变时,标记从一个位置跳到另一个位置,移动不顺畅, 实际上我正在删除上一个标记并在新位置创建新标记, 有什么方法可以平滑移动标记或者我可以更新以前的标记位置吗?请帮我。

这是代码 fragment 。

public  void  updatePackageLoc(){
        final Handler handler = new Handler();
        Runnable runnable = new Runnable() {
            @Override
            public void run() {

                while(updatelocation) {
                    Track_Location();
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            if (package_marker != null && package_newlat != 0.0 && package_newlon != 0.0) {
                                package_marker.remove();
                                LatLng position = new LatLng(package_newlat, package_newlon);
                                googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(position,14f));
                                package_marker = googleMap.addMarker(new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromResource(R.drawable.pacage)));
                            }

                        }
                    });

                }
            }
        };
        new Thread(runnable).start();
}

最佳答案

这对我有用,将 FinalPosition 声明为全局变量并在 Track_location 函数中更新。

public  void  updatePackageLoc(){
            final Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                @Override
                public void run() {

                    while(updatelocation) {
                        Track_Location();
                        try {
                            Thread.sleep(3000);

                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                        handler.post(new Runnable() {
                            long elapsed;
                            float t;
                            float v;
                            @Override
                            public void run() {
                                // Calculate progress using interpolator
                                elapsed = SystemClock.uptimeMillis() - start;
                                t = elapsed / durationInMs;
                                v = interpolator.getInterpolation(t);
                                //  Log.d("order_track",startPosition.toString()+ " " +finalPosition.toString());
                                LatLng currentPosition = new LatLng(
                                        startPosition.latitude*(1-t)+finalPosition.latitude*t,
                                        startPosition.longitude*(1-t)+finalPosition.longitude*t);

                                package_marker.setPosition(currentPosition);
                                // Repeat till progress is complete.
                                if (t < 1) {
                                    // Post again 16ms later.
                                    handler.postDelayed(this, 16);
                                }
                            }
                        });


                    }
                }
            };
            new Thread(runnable).start();
        }

关于android - 顺利更新谷歌地图上的标记位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35332968/

相关文章:

android - 如何感知是否有人点击了android中的某个区域?

android - adb 设备不适用于 ubuntu 上的 redmi note 3

ios - 如何限制 Google Places Autocomplete 不包含地址?

java - 根据 Google Maps API 的缩放级别显示商店

android - 如何在谷歌地图上找到两点之间的最佳路线然后突出显示它?

android - ProgressDialog 在执行任务时不显示

android - Firebase 实例 ID : deprecation of getId() in 21. 0.0

java - Android如何取消绘图前清除?

html - 如何在 agm-map 的特定位置显示自定义 DOM 元素

css - 在 Google map 上的另一个 Dom 元素上方显示 InfoWindow