Удалить линию с карты PolyLine в Google Map Android V2?

Я искал в Google и нашел этот ответ где я могу удалить все полилинии карты. Но я хочу удалить только определенную линию из полилинии. Например, я хочу удалить строку со 2-го по 3-й LatLng в данном коде. Я хочу изменить цвет определенной линии полилинии или сделать ее прозрачной. И я также хочу добавить clickListener к PolyLine.

   PolylineOptions rectOptions = new PolylineOptions()
            .add(new LatLng(37.35, -122.0))
            .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
            .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
            .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
            .add(new LatLng(37.35, -122.0)).width(5).color(Color.RED);; // Closes the polyline.

Polyline polyline = myMap.addPolyline(rectOptions);

Основная цель состоит в том, чтобы remove/make it transparent выделить определенную линию полилинии по щелчку или касанию.

PolylineOptions line= new PolylineOptions().add(HAMBURG,// these are latlong
                                                            KIEL,
                                                            KIEL2,
                                                            KIEL3
                                                        new LatLng(40.748963847316034,
                                                                   -73.96807193756104)
                                                            )
                                                   .width(5).color(Color.RED);



                    Polyline polyline=  googleMap.addPolyline(line);

И я хочу удалить линию между KIEL1 и KIEL2


person AndroidGeek    schedule 08.08.2014    source источник


Ответы (1)


Вам придется вручную удалить точки из полилинии.

РЕДАКТИРОВАТЬ:

Шаг за шагом:

Создайте список полилиний:

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

Добавьте PolylineOptions на карту:

Polyline polyline1 = myMap.addPolyline(rectOptions1);
Polyline polyline2 = myMap.addPolyline(rectOptions2);
Polyline polyline3 = myMap.addPolyline(rectOptions3);

Затем сохраните добавленные полилинии в свой массив

mPolylines.add(polyline1);
mPolylines.add(polyline2);
mPolylines.add(polyline3);

Теперь в любой момент вы можете обрезать полилинию следующим образом:

// Get polyline1
List<LatLng> points = mPolylines.get(0).getPoints();
// Set the bounds of points to remove (inclusive)
int startPoint = 1, endPoint = 2; // will remove kiel1 and kiel2
// Remove the points
for (int i=startPoint; i<=endPoint; i++) {
    points.remove(i);
}
// Added this line as getPoints returns a copy
mPolylines.get(0).setPoints(points);

Теперь в теории это должно работать нормально. Я обнаружил, что точки на самом деле не меняются после setPoints.

Я даже пробовал:

Polyline polyline = mPolylines.get(0);
// Get copy of the points
List<LatLng> points = polyline.getPoints();
mPolylines.get(0).remove();
mPolylines.remove(0);
for (int i=3000; i<7000; i++) {
    points.remove(i);
}
// Create a PolylineOptions object with the new points
PolylineOptions polylineOptions = new  PolylineOptions().addAll(points);
mPolylines.add(0, mMap.addPolyline(polylineOptions));

И, к моему удивлению, была добавлена ​​новая полилиния (это видно по измененной ширине и цвету обводки), но она по-прежнему использовала старые точки, хотя points.size() вернула правильный (урезанный) счет.

Я не уверен, почему это так, возможно, какая-то ошибка в моем коде. Вы можете сами попробовать эти методы и посмотреть, повезет ли вам больше.

person Simas    schedule 08.08.2014
comment
я обновил свой вопрос. Подскажите, пожалуйста, как удалить линию между KIEL1 и KIEL2? - person AndroidGeek; 08.08.2014
comment
@Nepster обновил мой цикл, чтобы сделать его более понятным (сделал его инклюзивным). Это удалит точки kiel1 и kiel2. - person Simas; 08.08.2014
comment
mPolyline.add(myMap.addPolyline(rectOptions)); заявление не работает. дает ошибки - person AndroidGeek; 08.08.2014
comment
@Nepster Ааа, это опечатка. Должно быть mPolylines.add, а не mPolyline.add. Обновлено. - person Simas; 08.08.2014
comment
Ничего не происходит, потому что вы удалили LatLng из списка точек, в то время как вы назначаете rectOptions вместо точек List‹LatLng›. мне нужно добавить точки, но они не добавляются, потому что это список‹latLng› - person AndroidGeek; 08.08.2014
comment
@Nepster обновлен пошаговым решением. Пожалуйста, опишите более конкретно свои проблемы, если вы все еще сталкиваетесь с ними. - person Simas; 08.08.2014
comment
Я понимаю, что делать, но не знаю, как это сделать? Я объясню это вам. вы создали список «LatLng» после удаления из него точек. Теперь мне нужно создать новую полилинию, используя эти точки, удалить предыдущую и установить последнюю. Только скажи мне, как я могу создать - person AndroidGeek; 08.08.2014
comment
+1 за вашу помощь. Теперь я понимаю, что делать, я приму ваш ответ после того, как закончу свою работу и закончу ваш ответ. - person AndroidGeek; 08.08.2014
comment
@Nepster Я наконец понял, о чем ты говоришь, и попробовал сам. Действительно, полилиния не меняется, и я получаю здесь очень странное поведение. Тем не менее, посмотрите мой обновленный ответ и попробуйте сами. - person Simas; 08.08.2014