我正在开发一款使用谷歌 map Android API的Android应用程序,但我在清除 map 上的折线时遇到了麻烦.我已经实现了在对话框中添加多段线,并且我想在按下"Clear"按钮时删除当前显示的多段线.但是,该多段线未按预期删除.

Problem Description:

我有一个对话框,当 Select 了特定的路由时,它会显示带有折线的Google map .以下是代码 struct 的概述:

我在 map 上创建并显示一个带有所选路由的折线的对话框. 我在对话框中有一个"Clear"按钮(ClearRouteBtn),它应该会从 map 上删除显示的折线. 我正在使用的多段线

Issue:

问题是,当我单击"Clear"按钮时,即使我使用的是PolylineView.Remove();,它也不会从 map 中删除折线.日志(log)消息指示多段线已删除,但它在 map 上仍然可见.

What I've Tried:

我try 添加日志(log)消息以验证PolylineView不为空. 我还确保正确设置了该按钮的点击监听器. 预期行为:

当我点击"Clear"按钮时,我希望当前显示的折线将从 map 中删除.

Actual Behavior:

当点击"清除"按钮时,多段线不会从 map 中删除.

Additional Information:

该应用程序使用Google Maps Android API. 使用PolylineView = mMap.addPolyline(polylineOptions);添加折线. "清除"按钮的可见性最初设置为不可见

Any suggestions or insights on how to resolve this issue would be greatly appreciated.


    public Polyline currentPolyline;

    public  Polyline PolylineView;

这是第二条折线所在的位置,也是我的清除按钮


                    Button buttonOkay = dialogView.findViewById(R.id.button);
                    buttonOkay.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            for (AlertDialog openDialog : openDialogs) {
                                if ("RouteForBalibagoHighway".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForBalibagoHighway
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForBalibagoHighway)
                                            .width(8)
                                            .color(jeep_grey);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                } else if ("RouteForBalibagoHolyHighway".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForBalibagoHolyHighway
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForBalibagoHolyHighway)
                                            .width(8)
                                            .color(jeep_purple);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                } else if ("RouteForVillaPampang".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForVillaPampang)
                                            .width(8)
                                            .color(jeep_yellow);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                } else if ("RouteForSapangBato".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForSapangBato)
                                            .width(8)
                                            .color(Color.RED);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForPandan".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForPandan)
                                            .width(8)
                                            .color(Color.BLUE);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForMaingate".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForMaingate)
                                            .width(8)
                                            .color(jeep_brown);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                }else if ("RouteForSunset".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForSunset)
                                            .width(8)
                                            .color(jeep_orange);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForHenson".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForHenson)
                                            .width(8)
                                            .color(jeep_white);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForMarisolPampang".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForMarisolPampang)
                                            .width(8)
                                            .color(Color.GREEN);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForCapaya".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForCapaya)
                                            .width(8)
                                            .color(jeep_pink);
                                    PolylineView = mMap.addPolyline(polylineOptions);
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }


                                // THIS IS WHERE I PUT MY CLEAR BUTTON
                                clearRouteBtn.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View v) {
                                        if (PolylineView != null) {
                                            PolylineView.remove();
                                            Log.d("Debug", "Removed: " + PolylineView);
                                        } else {
                                            // Handle the case where the polyline couldn't be added
                                        }
                                    }
                                });

                                // After adding the polyline, make the clear button visible
                                clearRouteBtn.setVisibility(View.VISIBLE);
                                discountApplied = false; // Mark the discount as applied
                                openDialog.dismiss();
                            }


                        }
                    });
                    
                } else {
                    Log.e(TAG, "No layout resource found for custom route: " + customRouteLabel);
                }
            }

推荐答案

我通过为折线添加一个ArrayList解决了这个问题.这允许我将每个新添加的行存储在ArrayList中,并在清除这些行后将PolylineView设置为NULL.我还将清除按钮移到了for循环之外,以防止意外行为.


  List<Polyline> polylines  = new ArrayList<>();

Button buttonOkay = dialogView.findViewById(R.id.button);
                    buttonOkay.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            for (AlertDialog openDialog : openDialogs) {

                                Polyline PolylineView = null;

                                if ("RouteForBalibagoHighway".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForBalibagoHighway
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForBalibagoHighway)
                                            .width(8)
                                            .color(jeep_grey);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }

                                } else if ("RouteForBalibagoHolyHighway".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForBalibagoHolyHighway
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForBalibagoHolyHighway)
                                            .width(8)
                                            .color(jeep_purple);
                                    PolylineView = mMap.addPolyline(polylineOptions);


                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                    Log.d("Debug", "PolylineView: " + PolylineView);

                                } else if ("RouteForVillaPampang".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForVillaPampang)
                                            .width(8)
                                            .color(jeep_yellow);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                } else if ("RouteForSapangBato".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForSapangBato)
                                            .width(8)
                                            .color(Color.RED);
                                    PolylineView = mMap.addPolyline(polylineOptions);


                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForPandan".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForPandan)
                                            .width(8)
                                            .color(Color.BLUE);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                    Log.d("Debug", "PolylineView: " + PolylineView);
                                }else if ("RouteForMaingate".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForMaingate)
                                            .width(8)
                                            .color(jeep_brown);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                }else if ("RouteForSunset".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForSunset)
                                            .width(8)
                                            .color(jeep_orange);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                }else if ("RouteForHenson".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForHenson)
                                            .width(8)
                                            .color(jeep_white);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                }else if ("RouteForMarisolPampang".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForMarisolPampang)
                                            .width(8)
                                            .color(Color.GREEN);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                }else if ("RouteForCapaya".equals(customRouteLabel)) {
                                    // Handle "Okay" button click for RouteForVillaPampang
                                    PolylineOptions polylineOptions = new PolylineOptions()
                                            .addAll(customRouteForCapaya)
                                            .width(8)
                                            .color(jeep_pink);
                                    PolylineView = mMap.addPolyline(polylineOptions);

                                    if (PolylineView != null) {
                                        polylines.add(PolylineView);
                                        Log.d("Debug", "PolylineView: " + PolylineView);
                                    }
                                }

                                // After adding the polyline, make the clear button visible
                                clearRouteBtn.setVisibility(View.VISIBLE);
                                discountApplied = false; // Mark the discount as applied
                                openDialog.dismiss();
                            }

Java相关问答推荐

Android Studio—java—在onBindViewHolder中,将断点和空白添加到BackclerView中

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

是否在允许数组元素为空时阻止 idea 为空性警告?

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

更新AWS凭据

Tinylog中的滚动文件会在每次应用启动时覆盖日志(log)文件

在添加AdMob时无法为Google Play构建应用程序包:JVM垃圾收集器崩溃和JVM内存耗尽

我怎样才能让IntelliJ标记toString()的任何实现?

如何在盒子的顶部和底部创建两张不同图片(大小相同)的盒子?

如何获得凌空cookies ,并设置它在下一个请求- android

深度优先搜索实现:算法只向右搜索

AWS Java SDK v2.x中没有setObjectAcl方法

JavaFX标签中的奇怪字符

为什么相同的数据条码在视觉上看起来不同?

获取所有可以处理Invent.ACTION_MEDIA_BUTTON Android 13 API33的Android包

Java类型推断:为什么要编译它?

如何使用jOOQ在PostgreSQL中从枚举类型生成Java枚举

这是JavaFX SceneBuilder的错误吗?

如何在更改分辨率时将鼠标坐标计算为世界坐标