无法删除谷歌地图片段中的折线

Posted

技术标签:

【中文标题】无法删除谷歌地图片段中的折线【英文标题】:Cannot Remove Polyine in googlemap fragment 【发布时间】:2021-08-26 01:43:03 【问题描述】:

这是用来制作折线的

for (int j = 0; j < user.length(); j++) 
                        JSONObject routes = user.getJSONObject(j);
                        JSONArray rute = routes.getJSONArray("points");

                        PolylineOptions options = new PolylineOptions();
                        for (int k = 0; k < rute.length(); k++) 
                            JSONObject users = rute.getJSONObject(k);
                            double rutes = users.getDouble("latitude");
                            double rutess = users.getDouble("longitude");
                            options.color(Color.parseColor("#FFA866"));
                            options.width(10);
                            options.geodesic(true);
                            options.add(new LatLng(rutes, rutess));

                            Log.d("TAG", "Hasil latitude = " + rutes);
                            Log.d("TAG", "Hasil longtitude = " + rutess);
                            jumlah_klik = jumlah_klik + 1;
                        
                        polyline_bis = mMap.addPolyline(options);
                    

这是用于删除折线

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() 
            @Override
            public boolean onMarkerClick(Marker marker) 
                if (polyline_bis != null)
                    polyline_bis.remove();
                else 
                    Log.d("TAG","not removee");
                
                return true;
            
        );

这是初始化地图片段

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        mapView = mapFragment.getView();

        mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(SearchDanBisKlik.this);
        Places.initialize(SearchDanBisKlik.this, getString(R.string.api_key));
        placesClient = Places.createClient(this);

这是在 GoogleMap googleMap 初始化

mMap = googleMap;

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
            return;
        
        mMap.setMyLocationEnabled(true);
        mMap.getUiSettings().setMyLocationButtonEnabled(true);

问题是: 单击标记时无法删除折线,如何删除?帮帮我,谢谢。

【问题讨论】:

【参考方案1】:

多段线添加了几次(user.length()),但对多段线的引用存储在同一个变量polyline_bis

for (int j = 0; j < user.length(); j++) 
    ...
    polyline_bis = mMap.addPolyline(options);

在这种情况下,polyline_bis 仅处理对最后添加的折线对象的引用。 可能您需要将添加的多段线存储到List 中,并且每次单击标记时选择适当的标记对象。

【讨论】:

@Noerrachmat- 请添加更多代码,例如其中polyline_bis 声明,标记创建等。

以上是关于无法删除谷歌地图片段中的折线的主要内容,如果未能解决你的问题,请参考以下文章

仅在设备屏幕的特定部分显示谷歌地图折线

如何从谷歌地图 api android 中删除多余的折线

如何使用谷歌地图获取折线中的坐标?

如何保存谷歌地图绘制的折线路径?

当标记向目的地移动时减少谷歌地图中的折线(Android)

谷歌地图片段无法膨胀