@Override
  public void buildPanel() {
    OpenLayers.setProxyHost("olproxy?targetURL=");

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setDisplayProjection(
        new Projection(
            "EPSG:4326")); // causes the mouse popup to display coordinates in this format
    defaultMapOptions.setNumZoomLevels(16);

    // Create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = "http://labs.metacarta.com/wms/vmap0";

    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    // Add the WMS to the map
    Map map = mapWidget.getMap();
    map.addLayer(wmsLayer);

    // Adds the custom mouse position to the map
    MousePositionOutput mpOut =
        new MousePositionOutput() {
          @Override
          public String format(LonLat lonLat, Map map) {
            String out = "";
            out += "<b>This is the longitude </b> ";
            out += lonLat.lon();
            out += "<b>, and this the latitude</b> ";
            out += lonLat.lat();

            return out;
          }
        };

    MousePositionOptions mpOptions = new MousePositionOptions();
    mpOptions.setFormatOutput(mpOut); // rename to setFormatOutput

    map.addControl(new MousePosition(mpOptions));

    // Lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new OverviewMap()); // + sign in the lowerright to display the overviewmap
    map.addControl(new ScaleLine()); // Display the scaleline

    // Center and zoom to a location
    map.setCenter(new LonLat(146.7, -41.8), 6);

    contentPanel.add(
        new HTML("<p>This example shows how to add a custom mouse position to the map..</p>"));
    contentPanel.add(mapWidget);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups
  }
  @Override
  public void buildPanel() {

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setNumZoomLevels(16);

    // create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);

    contentPanel.add(new HTML("<p>This example shows the use of the click handler.</p>"));
    contentPanel.add(
        new InfoPanel(
            "<p>Don't forget to add the following line to your HTML if you want to use Google V3. :</p>"
                + "<p><b>&lt;script src=\"http://maps.google.com/maps/api/js?v=3&amp;sensor=false\"&gt;&lt;/script&gt;</b></p>"));

    HorizontalPanel horizontalPanel = new HorizontalPanel();
    horizontalPanel.setSize("800px", "500px");
    outputPanel.setSize("300px", "475px");
    horizontalPanel.add(mapWidget);

    VerticalPanel eventConsole = new VerticalPanel();

    listBox.setSize("300px", "25px");

    eventConsole.add(listBox);
    eventConsole.add(this.outputPanel);

    horizontalPanel.add(eventConsole);

    contentPanel.add(horizontalPanel);

    // create some Google Layers
    GoogleV3Options gNormalOptions = new GoogleV3Options();
    gNormalOptions.setIsBaseLayer(true);
    gNormalOptions.setType(GoogleV3MapType.G_NORMAL_MAP);
    GoogleV3 gNormal = new GoogleV3("Google Normal", gNormalOptions);

    // and add them to the map
    final Map map = mapWidget.getMap();
    map.addLayer(gNormal);

    // lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new OverviewMap()); // + sign in the lowerright to display the overviewmap
    map.addControl(new ScaleLine()); // Display the scaleline

    final String singleKey = "single";
    ClickControl singleClickControl =
        new ClickControl(this.createClickHandlerOptions(true, false, false, false, 0, singleKey));
    map.addControl(singleClickControl);
    this.clickControls.put(singleKey, singleClickControl);
    listBox.addItem("single only", singleKey);

    final String doubleKey = "double";
    ClickControl doubleClickControl =
        new ClickControl(this.createClickHandlerOptions(false, true, false, false, 0, doubleKey));
    map.addControl(doubleClickControl);
    this.clickControls.put(doubleKey, doubleClickControl);
    this.listBox.addItem("double only", doubleKey);

    final String bothKey = "both";
    ClickControl bothClickControl =
        new ClickControl(this.createClickHandlerOptions(true, true, false, false, 0, bothKey));
    map.addControl(bothClickControl);
    this.clickControls.put(bothKey, bothClickControl);
    this.listBox.addItem("both", bothKey);

    final int tolerance = 200;
    final String dragKey = "drag";
    ClickControl dragClickControl =
        new ClickControl(
            this.createClickHandlerOptions(true, false, false, false, tolerance, dragKey));
    map.addControl(dragClickControl);
    this.clickControls.put(dragKey, dragClickControl);
    this.listBox.addItem("drag ( tolerance: " + tolerance + " )", dragKey);

    final String singleStopKey = "singlestop";
    ClickControl singleStopClickControl =
        new ClickControl(
            this.createClickHandlerOptions(true, false, true, false, 0, singleStopKey));
    map.addControl(singleStopClickControl);
    this.clickControls.put(singleStopKey, singleStopClickControl);
    listBox.addItem("single with stop", singleStopKey);

    final String doubleStopKey = "doublestop";
    ClickControl doubleStopClickControl =
        new ClickControl(
            this.createClickHandlerOptions(false, true, false, true, 0, doubleStopKey));
    map.addControl(doubleStopClickControl);
    this.clickControls.put(doubleStopKey, doubleStopClickControl);
    this.listBox.addItem("double with stop", doubleStopKey);

    final String bothStopKey = "bothstop";
    ClickControl bothStopClickControl =
        new ClickControl(this.createClickHandlerOptions(true, true, true, true, 0, bothStopKey));
    map.addControl(bothStopClickControl);
    this.clickControls.put(bothStopKey, bothStopClickControl);
    this.listBox.addItem("both with stop", bothStopKey);

    // center and zoom to a location
    LonLat lonLat = new LonLat(13.4, 52.51);
    lonLat.transform(
        DEFAULT_PROJECTION.getProjectionCode(),
        map.getProjection()); // transform lonlat to OSM coordinate system
    map.setCenter(lonLat, 12);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups

    this.listBox.addChangeHandler(
        new ChangeHandler() {

          @Override
          public void onChange(ChangeEvent event) {
            activateControl();
          }
        });

    this.activateControl();
  }
  @Override
  public void buildPanel() {

    OpenLayers.setProxyHost("olproxy?targetURL=");

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setNumZoomLevels(16);

    // Create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = "http://vmap0.tiles.osgeo.org/wms/vmap0";

    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    Map map = mapWidget.getMap();

    // Add some control to the map
    LayerSwitcher layerSwitcher = new LayerSwitcher();
    map.addControl(layerSwitcher); // Display the LayerSwitcher
    map.addControl(new ScaleLine()); // Display the scaleline

    // Add the WMS to the map
    map.addLayer(wmsLayer);

    // Add some vectors
    final Point point = new Point(-110, 45);

    final Vector vectorLayer = new Vector("Features to Transform");

    // Style for the vector
    final Style featureStyle = new Style();
    featureStyle.setFillColor("#eeeeff");
    featureStyle.setStrokeColor("#3300ff");
    featureStyle.setStrokeWidth(2);
    featureStyle.setPointRadius(3);

    // Style for the rotation Handle
    final Style rotationHandlerStyle = new Style();
    rotationHandlerStyle.setFillColor("#eeeeee");
    rotationHandlerStyle.setFillOpacity(1);
    rotationHandlerStyle.setPointRadius(12);

    // create a polygon feature from a linear ring of points
    Point[] pointList = new Point[6];
    for (int p = 0; p < 6; p++) {
      double a = p * (2 * Math.PI) / 7;
      double r = Math.random() + 1;
      Point newPoint =
          new Point(point.getX() + (r * Math.cos(a)), point.getY() + (r * Math.sin(a)));
      pointList[p] = newPoint;
    }
    LinearRing linearRing = new LinearRing(pointList);
    final Polygon polygon = new Polygon(new LinearRing[] {linearRing});

    final VectorFeature polygonFeature =
        new VectorFeature(polygon, featureStyle); // create a VectorFeature from the polygon

    vectorLayer.addFeature(polygonFeature);

    // Create Options For the Transform Control
    TransformFeatureOptions transformFeatureOptions = new TransformFeatureOptions();

    transformFeatureOptions.setRotate(true);
    transformFeatureOptions.setRotation(0);
    transformFeatureOptions.setRederIntent("transform");
    transformFeatureOptions.setRotationHandleSymbolizer(rotationHandlerStyle);

    // Create The Transform Control
    TransformFeature transformFeature = new TransformFeature(vectorLayer, transformFeatureOptions);

    map.setCenter(new LonLat(point.getX(), point.getY()), 7);
    map.addLayer(vectorLayer);
    // Add and activate the control
    map.addControl(transformFeature);
    transformFeature.activate();

    contentPanel.add(new HTML("<p>This example shows the transformation of a Feature.</p>"));

    contentPanel.add(mapWidget);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups
  }
  @Override
  public void buildPanel() {
    OpenLayers.setProxyHost("olproxy?targetURL=");

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setDisplayProjection(
        new Projection(
            "EPSG:4326")); // causes the mouse popup to display coordinates in this format
    defaultMapOptions.setNumZoomLevels(16);

    // Create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = "http://labs.metacarta.com/wms/vmap0";

    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    // Add the WMS to the map
    Map map = mapWidget.getMap();
    map.addLayer(wmsLayer);

    // Adds the graticule control
    LineSymbolizerOptions lineOptions = new LineSymbolizerOptions();
    lineOptions.setStrokeColor("#ccccff");
    lineOptions.setStrokeOpacity(0.5);
    lineOptions.setStrokeWidth(1);

    LineSymbolizer line = new LineSymbolizer(lineOptions);

    TextSymbolizerOptions textOptions = new TextSymbolizerOptions();
    textOptions.setFontSize("9px");

    TextSymbolizer text = new TextSymbolizer(textOptions);

    final GraticuleOptions grtOptions = new GraticuleOptions();

    grtOptions.setTargetSize(200);
    grtOptions.setLabelled(true);
    grtOptions.setLineSymbolyzer(line);
    grtOptions.setLabelSymbolizer(text);
    Graticule graticule = new Graticule(grtOptions);

    graticule.setAutoActivate(true);

    map.addControl(graticule);

    // Lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new OverviewMap()); // + sign in the lowerright to display the overviewmap
    map.addControl(new ScaleLine()); // Display the scaleline

    // Center and zoom to a location
    map.setCenter(new LonLat(146.7, -41.8), 6);

    contentPanel.add(
        new HTML("<p>This example shows how to add a custom mouse position to the map..</p>"));
    contentPanel.add(mapWidget);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups
  }
Beispiel #5
0
  /** initialize map widget using gwt-openlayers */
  void initMapGwtOl() {

    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setNumZoomLevels(16); //

    // defaultMapOptions.setProjection("EPSG:4326");
    defaultMapOptions.setMaxExtent(new Bounds(-180, -90, 180, 90));
    defaultMapOptions.setRestrictedExtent(new Bounds(-180, -90, 180, 90));
    defaultMapOptions.setUnits("degrees");
    mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    /*GoogleV3Options gNormalOptions = new GoogleV3Options();
    gNormalOptions.setIsBaseLayer(true);
    gNormalOptions.setType(GoogleV3MapType.G_NORMAL_MAP);
    GoogleV3 gNormal = new GoogleV3("Google Normal", gNormalOptions);*/

    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = EUOSMEGWT.wmsEndpoint;
    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    // Add the WMS to the map
    final Map map = mapWidget.getMap();
    // map.addLayer(gNormal);
    map.addLayer(wmsLayer);

    /*OSM osm_1 = OSM.Mapnik("Mapnik");
    OSM osm_2 = OSM.CycleMap("CycleMap");
    osm_1.setIsBaseLayer(true);
    osm_2.setIsBaseLayer(true);
    map.addLayer(osm_1);
    map.addLayer(osm_2);*/

    // Lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new ScaleLine()); // Display the scaleline
    map.addControl(new MousePosition());
    // Center and zoom to a location
    LonLat lonLat = new LonLat(6.95, 50.94);
    lonLat.transform(
        DEFAULT_PROJECTION.getProjectionCode(),
        map.getProjection()); // transform lonlat to OSM coordinate system
    map.setCenter(lonLat, 3);

    /*map.addMapClickListener(new MapClickListener() {

        public void onClick(MapClickListener.MapClickEvent mapClickEvent) {
            LonLat lonLat = mapClickEvent.getLonLat();

            lonLat.transform(map.getProjection(), DEFAULT_PROJECTION.getProjectionCode()); //transform lonlat to more readable format

            Window.alert("LonLat = (" + lonLat.lon() + " ; " + lonLat.lat() + ")");
        }

    });*/

    FeatureAddedListener listener =
        new FeatureAddedListener() {
          public void onFeatureAdded(VectorFeature vf) {
            Polygon aoi = Polygon.narrowToPolygon(vf.getGeometry().getJSObject());
            LinearRing[] rings = aoi.getComponents();
            if (rings != null) {
              rings[0].getComponents();
            }
            Geometry geo = vf.getGeometry();

            // Window.alert("Feature of class " + geo.getClassName() +  " added with bounds " +
            // geo.getBounds().toString());
            double north = Math.floor(geo.getBounds().getUpperRightY() * 100000) / 100000;
            double east = Math.floor(geo.getBounds().getUpperRightX() * 100000) / 100000;
            double south = Math.floor(geo.getBounds().getLowerLeftY() * 100000) / 100000;
            double west = Math.floor(geo.getBounds().getLowerLeftX() * 100000) / 100000;
            geoBoundsObj.newTextBoxNorth.setValue("" + north);
            geoBoundsObj.newTextBoxEast.setValue("" + east);
            geoBoundsObj.newTextBoxSouth.setValue("" + south);
            geoBoundsObj.newTextBoxWest.setValue("" + west);
            map.zoomToExtent(geo.getBounds());
          }
        };
    Vector boxLayer = new Vector("Box Layer");
    DrawFeatureOptions drawRegularPolygonFeatureOptions = new DrawFeatureOptions();
    drawRegularPolygonFeatureOptions.onFeatureAdded(listener);
    RegularPolygonHandlerOptions regularPolygonHandlerOptions = new RegularPolygonHandlerOptions();
    regularPolygonHandlerOptions.setSides(4);
    regularPolygonHandlerOptions.setIrregular(true);
    regularPolygonHandlerOptions.setPersist(true);
    drawRegularPolygonFeatureOptions.setHandlerOptions(regularPolygonHandlerOptions);
    final DrawFeature drawRegularPolygon =
        new DrawFeature(boxLayer, new RegularPolygonHandler(), drawRegularPolygonFeatureOptions);
    map.addControl(drawRegularPolygon);
    drawRegularPolygon.activate();
  }
Beispiel #6
0
  /**
   * constructor TabGeographic
   *
   * @return the widget composed by the Geographic Tab
   */
  public TabGeographic() {
    queryButton.setText(constants.runQuery());
    // set style
    titleLabel.removeStyleName("gwt-Label");
    // set form names
    setFormName();

    // initialize widget
    initWidget(uiBinder.createAndBindUi(this));

    // add scroll bars
    dock.getWidgetContainerElement(dock.getWidget(0)).addClassName("auto");
    dock.getWidgetContainerElement(dock.getWidget(0)).getStyle().clearOverflow();
    Element myTable = dock.getElement().getElementsByTagName("table").getItem(0);
    @SuppressWarnings("unused")
    String txt = myTable.getInnerHTML();
    myTable.getStyle().clearPosition();

    if (summaryHTML.getHTML().isEmpty()) summaryHTML.removeFromParent();

    // HTML matchFound = new HTML("<div style=\"height:300px;overflow:auto;\"><div
    // id=\"responseCount\" style=\"display:none;\"><span style=\"font-weight: bold;\">Matches
    // found:</span><span id=\"matchCount\" style=\"display:none;\"></span><div
    // id=\"matches\"></div></div>");

    // Workaround to the problem of the map position
    // Issue 366: Google Map widget does not initialize correctly inside a LayoutPanel
    if (EUOSMEGWT.apiMapstraction.equalsIgnoreCase("google")) {
      map = new com.google.gwt.maps.client.MapWidget();
      nativeMakeMap(
          map.getElement(),
          geoBoundsObj.newTextBoxNorth.getElement(),
          geoBoundsObj.newTextBoxEast.getElement(),
          geoBoundsObj.newTextBoxSouth.getElement(),
          geoBoundsObj.newTextBoxWest.getElement(),
          queryTextBox.getElement());
      mapPanel.add(map);
      // google.maps.event.trigger(map, 'resize');
      // mapPanel.add(matchFound);
      // Event.trigger(mapWidget.getMap(), "resize");
    } else if (EUOSMEGWT.apiMapstraction.equalsIgnoreCase("gwt-ol")) {
      queryPanel.removeFromParent();
      if (mapWidget == null) {
        initMapGwtOl();
        mapPanel.add(mapWidget);
        mapWidget
            .getElement()
            .getFirstChildElement()
            .getStyle()
            .setZIndex(0); // force the map to fall behind popups MG 06.05.2015
      }
    } else {
      queryPanel.removeFromParent();
      sinkEvents(Event.ONMOUSEUP);
      Element map_el = DOM.getElementById("mapstraction");
      mxnMakeMap(map_el, EUOSMEGWT.apiMapstraction);
      mapPanel.getElement().insertFirst(map_el);
    }

    preferredObj.add(country);
    country.myListBox.addChangeHandler(
        new ChangeHandler() {
          @Override
          public void onChange(ChangeEvent event) {
            String selValue = country.myListBox.getValue(country.myListBox.getSelectedIndex());
            if (!selValue.isEmpty()) {
              // selValue contains a value like S:-21.39;W:55.84;N:51.09;E:-63.15
              String[] coordinates = selValue.split(";");
              String south = "";
              String west = "";
              String north = "";
              String east = "";
              for (int i = 0; i < coordinates.length; i++) {
                if (coordinates[i].startsWith("S:")) south = coordinates[i].substring(2);
                if (coordinates[i].startsWith("W:")) west = coordinates[i].substring(2);
                if (coordinates[i].startsWith("N:")) north = coordinates[i].substring(2);
                if (coordinates[i].startsWith("E:")) east = coordinates[i].substring(2);
              }
              if (!north.isEmpty() && !east.isEmpty() && !south.isEmpty() && !west.isEmpty()) {
                geoBoundsObj.newTextBoxSouth.setValue(south);
                geoBoundsObj.newTextBoxWest.setValue(west);
                geoBoundsObj.newTextBoxNorth.setValue(north);
                geoBoundsObj.newTextBoxEast.setValue(east);
                geoBoundsObj.newButton.click();

                // zoom to the country bound
                if (EUOSMEGWT.apiMapstraction.equalsIgnoreCase("gwt-ol")) {
                  Map map = mapWidget.getMap();
                  map.zoomToExtent(
                      new Bounds(
                          Double.parseDouble(west),
                          Double.parseDouble(south),
                          Double.parseDouble(east),
                          Double.parseDouble(north)));
                } else
                  setBoundsMapstraction(
                      Double.parseDouble(south),
                      Double.parseDouble(west),
                      Double.parseDouble(north),
                      Double.parseDouble(east));
              } else Window.alert(constants.geoCodeListError());
            }
          }
        });

    geoBoundsObj.myListBox.addBlurHandler(
        new BlurHandler() {
          @Override
          public void onBlur(BlurEvent event) {
            // refresh the map to avoid shifting cursor
            if (EUOSMEGWT.apiMapstraction.equalsIgnoreCase("gwt-ol")) {
              mapWidget.getMap().setCenter(mapWidget.getMap().getCenter());
            }
          }
        });

    geoBoundsObj.newButton.addClickHandler(
        new ClickHandler() {
          public void onClick(ClickEvent event) {
            // refresh the map to avoid shifting cursor
            if (EUOSMEGWT.apiMapstraction.equalsIgnoreCase("gwt-ol")) {
              mapWidget.getMap().setCenter(mapWidget.getMap().getCenter());
            }
          }
        });
  }
  @Override
  public void buildPanel() {

    OpenLayers.setProxyHost("olproxy?targetURL=");

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setNumZoomLevels(16);

    // Create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = "http://vmap0.tiles.osgeo.org/wms/vmap0";

    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    // Add the WMS to the map
    Map map = mapWidget.getMap();
    map.addLayer(wmsLayer);

    // Add some vectors
    final Vector vectorLayer = new Vector("Simple Geometry");
    map.addLayer(vectorLayer);

    // create a point feature
    final Point point =
        new Point(-110, 45); // we need a Point object because this has the rotate method
    Style pointStyle = new Style();
    pointStyle.setFillColor("blue");
    pointStyle.setStrokeColor("blue");
    pointStyle.setStrokeWidth(3);
    pointStyle.setPointRadius(6);
    pointStyle.setFillOpacity(0.6);
    final VectorFeature pointFeature =
        new VectorFeature(point, pointStyle); // create a VectorFeature from the rotatable Polygon
    vectorLayer.addFeature(pointFeature);

    // create a line feature
    Point[] linePoints = {new Point(-120, 40), new Point(-115, 45), new Point(-110, 40)};
    final LineString lineString =
        new LineString(
            linePoints); // we need a LineString object because this has the rotate method
    final Style lineStyle = new Style();
    lineStyle.setStrokeColor("#339933");
    lineStyle.setStrokeWidth(3);
    lineStyle.setPointRadius(6);
    final VectorFeature lineFeature =
        new VectorFeature(
            lineString, lineStyle); // create a VectorFeature from the rotatable LineString
    vectorLayer.addFeature(lineFeature);

    // create a polygon feature from a linear ring of points
    Point[] pointList = new Point[6];
    for (int p = 0; p < 6; p++) {
      double a = p * (2 * Math.PI) / 7;
      double r = Math.random() + 1;
      Point newPoint =
          new Point(point.getX() + (r * Math.cos(a)), point.getY() + (r * Math.sin(a)));
      pointList[p] = newPoint;
    }
    LinearRing linearRing = new LinearRing(pointList);
    final Polygon polygon =
        new Polygon(
            new LinearRing[] {
              linearRing
            }); // we need a Polygon object because this has the rotate method
    final VectorFeature polygonFeature =
        new VectorFeature(polygon, lineStyle); // create a VectorFeature from the rotatable Polygon
    vectorLayer.addFeature(polygonFeature);

    // Lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new OverviewMap()); // + sign in the lowerright to display the overviewmap
    map.addControl(new ScaleLine()); // Display the scaleline

    // Center and zoom to a location
    map.setCenter(new LonLat(point.getX(), point.getY()), 5);

    // start the actual rotating
    final Point origin = new Point(-111.04, 45.68);

    final Timer t =
        new Timer() // we just use a GWT timer to have animation, no need for special OpenLayer
        // timer stuff...
        {
          @Override
          public void run() {
            polygon.rotate(-360 / 20, origin);
            vectorLayer.drawFeature(polygonFeature, lineStyle);

            lineString.rotate(360 / 40, origin);
            vectorLayer.drawFeature(lineFeature, lineStyle);

            point.rotate(360 / 20, origin);
            vectorLayer.drawFeature(pointFeature, lineStyle);
          }
        };
    t.scheduleRepeating(100);

    contentPanel.add(
        new HTML(
            "<p>This example shows a few features rotating. There is not yet a control built that provides a tool for rotating, but the geometry.rotate method can be accessed to rotate programmatically.</p>"));

    contentPanel.add(mapWidget);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups
  }
    @Override
    public void buildPanel() {

        // create some MapOptions
        MapOptions defaultMapOptions = new MapOptions();
        defaultMapOptions.setNumZoomLevels(16);

        // create a MapWidget
        MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);

        contentPanel.add(new HTML(
                "<p>This example shows the use of the handler with a key mask.</p>"
                + "<p>"
                + "<li>Choose the keys you want to check with the checkboxes.</li>"
                + "<li>Press an hold the buttons you have choosen and click in the map.</li>"));
        contentPanel.add(
                new InfoPanel(
                        "<p>Don't forget to add the following line to your HTML if you want to use Google V3. :</p>"
                        + "<p><b>&lt;script src=\"http://maps.google.com/maps/api/js?v=3&amp;sensor=false\"&gt;&lt;/script&gt;</b></p>"));
        
        HorizontalPanel keyChooserPanel = new HorizontalPanel();
        
        this.keyAltCheckBox = new CheckBox("Alt");
        this.keyShiftCheckBox = new CheckBox("Shift");
        
        keyChooserPanel.add(this.keyAltCheckBox);
        keyChooserPanel.add(this.keyShiftCheckBox);
        
        
        ValueChangeHandler<Boolean> changeHandler = new ValueChangeHandler<Boolean>() {
            
            @Override
            public void onValueChange(ValueChangeEvent<Boolean> event) {
                
                int keyCodes = Handler.MOD_NONE;
                
                if(keyAltCheckBox.getValue()) {
                    keyCodes |= Handler.MOD_ALT;
                }
                
                if(keyShiftCheckBox.getValue()) {
                    keyCodes |= Handler.MOD_SHIFT;
                }
                
                keyMaskControl.setKeyMask(keyCodes);
                
            }
        };
        
        this.keyShiftCheckBox.addValueChangeHandler(changeHandler);
        this.keyAltCheckBox.addValueChangeHandler(changeHandler);
        this.keyShiftCheckBox.addValueChangeHandler(changeHandler);

        contentPanel.add(mapWidget);
        contentPanel.add(keyChooserPanel);

        // create some Google Layers
        GoogleV3Options gNormalOptions = new GoogleV3Options();
        gNormalOptions.setIsBaseLayer(true);
        gNormalOptions.setType(GoogleV3MapType.G_NORMAL_MAP);
        GoogleV3 gNormal = new GoogleV3("Google Normal", gNormalOptions);

        // and add them to the map
        final Map map = mapWidget.getMap();
        map.addLayer(gNormal);

        // lets add some default controls to the map
        map.addControl(new LayerSwitcher()); //+ sign in the upperright corner to display the layer switcher
        map.addControl(new OverviewMap()); //+ sign in the lowerright to display the overviewmap
        map.addControl(new ScaleLine()); //Display the scaleline
        
        
        map.addControl(keyMaskControl);
        
        keyMaskControl.activate();
        
        // center and zoom to a location
        LonLat lonLat = new LonLat(13.4, 52.51);
        lonLat.transform(DEFAULT_PROJECTION.getProjectionCode(),
                map.getProjection()); //transform lonlat to OSM coordinate system
        map.setCenter(lonLat, 12);

        initWidget(contentPanel);

        mapWidget.getElement().getFirstChildElement().getStyle().setZIndex(0); //force the map to fall behind popups


    }
  @Override
  public void buildPanel() {
    OpenLayers.setProxyHost("olproxy?targetURL=");

    // create some MapOptions
    MapOptions defaultMapOptions = new MapOptions();
    defaultMapOptions.setDisplayProjection(
        new Projection(
            "EPSG:4326")); // causes the mouse popup to display coordinates in this format
    defaultMapOptions.setNumZoomLevels(16);

    // Create a MapWidget
    MapWidget mapWidget = new MapWidget("500px", "500px", defaultMapOptions);
    // Create a WMS layer as base layer
    WMSParams wmsParams = new WMSParams();
    wmsParams.setFormat("image/png");
    wmsParams.setLayers("basic");
    wmsParams.setStyles("");

    WMSOptions wmsLayerParams = new WMSOptions();
    wmsLayerParams.setUntiled();
    wmsLayerParams.setTransitionEffect(TransitionEffect.RESIZE);

    String wmsUrl = "http://labs.metacarta.com/wms/vmap0";

    WMS wmsLayer = new WMS("Basic WMS", wmsUrl, wmsParams, wmsLayerParams);

    // Add the WMS to the map
    Map map = mapWidget.getMap();
    map.addLayer(wmsLayer);

    // Add a measure control to the map
    MeasureOptions measOpts = new MeasureOptions();
    measOpts.setPersist(true);
    measOpts.setGeodesic(true); // earth is not a cylinder
    Measure measure = new Measure(new PathHandler(), measOpts);
    map.addControl(measure);

    measure.addMeasureListener(
        new MeasureListener() {
          public void onMeasure(MeasureEvent eventObject) {
            Window.alert(
                "Measured distance is " + eventObject.getMeasure() + " " + eventObject.getUnits());
          }
        });
    measure.activate();

    // Lets add some default controls to the map
    map.addControl(
        new LayerSwitcher()); // + sign in the upperright corner to display the layer switcher
    map.addControl(new OverviewMap()); // + sign in the lowerright to display the overviewmap
    map.addControl(new ScaleLine()); // Display the scaleline

    // Center and zoom to a location
    map.setCenter(new LonLat(146.7, -41.8), 6);

    contentPanel.add(
        new HTML(
            "<p>This example shows how to add a Measure Control to the map.</p><p>Click on the map to add measure points, end a measurement using double click.</p><p>Note that you could add buttons to enable/disable the measure control on command.</p>"));
    contentPanel.add(mapWidget);

    initWidget(contentPanel);

    mapWidget
        .getElement()
        .getFirstChildElement()
        .getStyle()
        .setZIndex(0); // force the map to fall behind popups
  }