예제 #1
0
  @Override
  Component getMap() {

    OpenStreetMapLayer osm = new OpenStreetMapLayer();
    osm.setDisplayName("OSM Streets Base");

    GoogleStreetMapLayer gsm = new GoogleStreetMapLayer();
    gsm.setDisplayName("Google Streets Base");

    GoogleHybridMapLayer ghm = new GoogleHybridMapLayer();
    ghm.setDisplayName("Google Hybrid Base");

    map.addLayer(osm);
    map.addLayer(gsm);
    map.addLayer(ghm);

    map.setCenter(-104.9, 38);
    map.setZoom(6);
    map.setSizeFull();

    Label l1 =
        new Label(
            "The map's base layer state should be synchronized between this OptionGroup and the OL LayerSwitcher.");
    l1.setSizeUndefined();

    final Layer[] layers = {osm, gsm, ghm};
    final List<Layer> layerlist = Arrays.asList(layers);
    final OptionGroup baseLayers = new OptionGroup("Base Layers", layerlist);
    baseLayers.select(osm.getDisplayName());
    baseLayers.setNullSelectionAllowed(false);
    baseLayers.setImmediate(true);
    baseLayers.addValueChangeListener(
        new ValueChangeListener() {
          public void valueChange(ValueChangeEvent event) {
            Layer newlayer = (Layer) event.getProperty().getValue();
            if (!newlayer.equals(map.getBaseLayer())) {
              map.setBaseLayer(newlayer);
            }
          }
        });

    map.addBaseLayerChangeListener(
        new BaseLayerChangeListener() {

          public void baseLayerChanged(BaseLayerChangeEvent event) {
            Layer newBaseLayer = map.getBaseLayer();
            if (!newBaseLayer.equals(baseLayers.getValue())) {
              baseLayers.select(newBaseLayer);
            }
          }
        });

    VerticalLayout vl = new VerticalLayout();
    vl.setSizeFull();
    vl.addComponent(l1);
    vl.addComponent(baseLayers);
    vl.addComponent(map);
    vl.setExpandRatio(map, 1f);

    return vl;
  }