Here is an even simpler example, using just a button to remove markers. On the screen, only one marker (the first) is removed. Expected is that all markers are removed.
Versions:
Latest Chrome browser.
Vaadin 7.4.0
googlempas add-on: 1.0.0
Tomcat 7
package com.buluschek.distancemap;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.shared.ui.slider.SliderOrientation;
import com.vaadin.tapio.googlemaps.GoogleMap;
import com.vaadin.tapio.googlemaps.client.LatLon;
import com.vaadin.tapio.googlemaps.client.overlays.GoogleMapMarker;
import com.vaadin.ui.Button;
import com.vaadin.ui.Slider;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Button.ClickEvent;
@SuppressWarnings("serial")
@Theme("distancemap")
public class DistancemapUI extends UI {
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = DistancemapUI.class, widgetset = "com.buluschek.distancemap.widgetset.DistancemapWidgetset")
public static class Servlet extends VaadinServlet {
}
private final List<GoogleMapMarker > markers = new ArrayList<GoogleMapMarker>();
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
// Creating 20 markers at different positions
for (int i = 0; i < 20; i++) {
GoogleMapMarker googleMapMarker = new GoogleMapMarker("Mark " + i, new LatLon(50+(i % 3), i), false, null);
markers.add(googleMapMarker);
}
final GoogleMap googleMap = new GoogleMap(null, null, "english");
googleMap.setSizeFull();
googleMap.fitToBounds(new LatLon(53, 20), new LatLon(50, 0));
// Adding all markers
for (GoogleMapMarker marker : markers) {
googleMap.addMarker(marker);
}
// On button click remove all markers
Button button = new Button("Remove markers");
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
for (GoogleMapMarker marker : markers) {
googleMap.removeMarker(marker);
}
}
});
layout.addComponent(googleMap);
layout.addComponent(button);
}
}