地图上的折线无法删除

问题描述 投票:0回答:1

我正在开发一个使用 Google Maps Android API 的 Android 应用程序,但在从地图中清除折线时遇到问题。我已经在对话框中实现了多段线的添加,并且我想在按下“清除”按钮时删除当前显示的多段线。但是,折线并未按预期被删除。

问题描述:

当选择特定路线时,我有一个对话框显示带有折线的 Google 地图。以下是代码结构的概述:

我在地图上创建并显示一个包含所选路线折线的对话框。 我在对话框中有一个“清除”按钮(clearRouteBtn),它应该从地图中删除显示的折线。 我正在使用的折线

问题:

问题是,当我单击“清除”按钮时,即使我使用 PolylineView.remove();,它也不会从地图中删除折线。日志消息表明折线已被删除,但它在地图上仍然可见。

我尝试过的:

我尝试添加日志消息来验证 PolylineView 不为空。 我还确保按钮的单击侦听器已正确设置。 预期行为:

当我单击“清除”按钮时,我希望当前显示的折线从地图中删除。

实际行为:

单击“清除”按钮时,折线不会从地图上删除。

附加信息:

该应用程序使用 Google 地图 Android API。 使用 PolylineView = mMap.addPolyline(polylineOptions); 添加折线。 “清除”按钮的可见性最初设置为 INVISIBLE

任何有关如何解决此问题的建议或见解将不胜感激。


    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);
                }
            }

java android google-maps google-maps-android-api-2 polyline
1个回答
0
投票

“我通过为折线添加 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();
                            }

© www.soinside.com 2019 - 2024. All rights reserved.