public void onMouseUp(MouseUpEvent event) { if (event.getNativeButton() != NativeEvent.BUTTON_RIGHT && dragging) { dragging = false; if (screenBounds != null) { Bbox worldBounds = viewPort.transform(screenBounds, RenderSpace.SCREEN, RenderSpace.WORLD); viewPort.applyBounds(worldBounds); } } event.stopPropagation(); } });
protected void onUpdate(double progress) { double deltaX = (progress * translateX) - (previousProgress * translateX); double deltaY = (progress * translateY) - (previousProgress * translateY); Coordinate position = viewPort.getPosition(); viewPort.applyPosition(new Coordinate(position.getX() + deltaX, position.getY() + deltaY)); previousProgress = progress; } }
public void onMouseUp(MouseUpEvent event) { if (dragging) { dragging = false; shrinkLayout(); int index = Math.round((currentY - minY) / 10); double scale = viewPort.getZoomStrategy().getZoomStepScale(index); viewPort.applyScale(scale); } }
public void onClick(ClickEvent event) { int index = viewPort.getZoomStrategy().getZoomStepIndex(viewPort.getScale()); try { viewPort.applyScale(viewPort.getZoomStrategy().getZoomStepScale(index - 1)); } catch (IllegalArgumentException e) { } event.stopPropagation(); } }, ClickEvent.getType());
/** * Transform a pixel-length into a real-life distance expressed in map CRS. This depends on the current map scale. * * @param pixels * The number of pixels to calculate the distance for. * @return The distance the given number of pixels entails. */ private double pixelsToUnits(int pixels) { Coordinate c1 = mapPresenter.getViewPort().transform(new Coordinate(0, 0), RenderSpace.SCREEN, RenderSpace.WORLD); Coordinate c2 = mapPresenter.getViewPort().transform(new Coordinate(pixels, 0), RenderSpace.SCREEN, RenderSpace.WORLD); return MathService.distance(c1, c2); }
@Override public void onViewPortScaled(ViewPortScaledEvent event) { if (mask != null) { mask.setUserBounds(event.getViewPort().getBounds()); } }
protected void updateView(HumanInputEvent<?> event) { Coordinate end = getLocation(event, RenderSpace.SCREEN); Coordinate beginWorld = mapPresenter.getViewPort().transform(dragOrigin, RenderSpace.SCREEN, RenderSpace.WORLD); Coordinate endWorld = mapPresenter.getViewPort().transform(end, RenderSpace.SCREEN, RenderSpace.WORLD); double x = mapPresenter.getViewPort().getPosition().getX() + beginWorld.getX() - endWorld.getX(); double y = mapPresenter.getViewPort().getPosition().getY() + beginWorld.getY() - endWorld.getY(); if (dragging) { mapPresenter.getViewPort().dragToPosition(new Coordinate(x, y)); } else { mapPresenter.getViewPort().applyPosition(new Coordinate(x, y)); } dragOrigin = end; } }
public void onLayerAdded(LayerAddedEvent event) { Layer layer = event.getLayer(); configuration.setAnimated(event.getLayer(), true); HtmlGroup layerContainer = new HtmlGroup(htmlContainer.getWidth(), htmlContainer.getHeight()); layerContainer.setVisible(layer.isShowing()); htmlContainer.add(layerContainer); LayerRenderer layerRenderer = null; if (layer instanceof HasLayerRenderer) { layerRenderer = ((HasLayerRenderer) layer).getRenderer(layerContainer); } else { layerRenderer = mapScalesRendererFactory.create(viewPort, layer, layerContainer); } if (layerRenderers.size() == 0) { layerRenderer.addScaleLevelRenderedHandler(new ScaleLevelRenderedHandler() { public void onScaleLevelRendered(ScaleLevelRenderedEvent event) { onScaleRendered(event.getScale()); } }); } layerRenderers.put(layer, layerRenderer); if (viewPort.isInitialized()) { navigateTo(viewPort.getBounds(), viewPort.getScale(), 0); } }
private void translate() { Matrix matrix = viewPort.getTransformationMatrix(RenderSpace.WORLD, RenderSpace.SCREEN); for (Transformable transformable : display.getWorldTransformables()) { transformable.setTranslation(matrix.getDx(), matrix.getDy()); } }
@Override public void onDoubleClick(DoubleClickEvent event) { // Zoom in on the event location: Bbox bounds = mapPresenter.getViewPort().getBounds(); double x = lastClickPosition.getX() - (bounds.getWidth() / 4); double y = lastClickPosition.getY() - (bounds.getHeight() / 4); Bbox newBounds = new Bbox(x, y, bounds.getWidth() / 2, bounds.getHeight() / 2); mapPresenter.getViewPort().applyBounds(newBounds); }
@Override public void onUp(HumanInputEvent<?> event) { // Assure dragging or clicking started inside this widget if (dragging) { shift |= event.isShiftKeyDown(); // shift is used when depressed either at beginning or end updateCircle(event); Geometry geometry = new Geometry(Geometry.POINT, 0, -1); Coordinate[] coordinates = new Coordinate[]{new Coordinate(circle.getUserX(), circle.getUserY())}; geometry.setCoordinates(coordinates); ViewPort viewPort = mapPresenter.getViewPort(); execute(viewPort.transform(geometry, RenderSpace.SCREEN, RenderSpace.WORLD), circle.getRadius() / viewPort.getScale()); stopDragging(); dragging = false; } }
@Override public void onViewPortTranslating(ViewPortTranslatingEvent event) { // reflect intermediate changes by translating screen container if (container != null) { Matrix translation = event.getViewPort().getTranslationMatrix(RenderSpace.WORLD, RenderSpace.SCREEN); container.setTranslation(translation.getDx() - previousDx, translation.getDy() - previousDy); } }
public void execute(GetMapConfigurationResponse response) { // Initialize the MapModel and ViewPort: ClientMapInfo mapInfo = response.getMapInfo(); ((MapConfigurationImpl) configuration).setServerConfiguration(mapInfo); // Configure the ViewPort. This will immediately zoom to the initial bounds: viewPort.setMapSize(display.getWidth(), display.getHeight()); layersModel.initialize(mapInfo, viewPort, eventBus); viewPort.initialize(mapInfo, eventBus); // Immediately zoom to the initial bounds as configured: viewPort.applyBounds(mapInfo.getInitialBounds()); // Initialize the FeatureSelectionRenderer: selectionRenderer.initialize(mapInfo); // Adding the default map control widgets: if (getWidgetPane() != null) { getWidgetPane().add(new Watermark(MapPresenterImpl.this)); getWidgetPane().add(new Scalebar(MapPresenterImpl.this)); getWidgetPane().add(new ZoomControl(MapPresenterImpl.this), 5, 5); if (!isMobileBrowser) { getWidgetPane().add(new ZoomToRectangleControl(MapPresenterImpl.this), 60, 5); } } // Fire initialization event eventBus.fireEvent(new MapInitializationEvent()); } });
private void zoomTo(double scale, boolean isGestureEnded) { if (midPoint != null) { if (isGestureEnded) { mapPresenter.getViewPort().applyScale(scale * lastScale, midPoint); } else { mapPresenter.getViewPort().dragToScale(scale * lastScale, midPoint); } } else { if (isGestureEnded) { mapPresenter.getViewPort().applyScale(scale * lastScale); } else { mapPresenter.getViewPort().dragToScale(scale * lastScale); } } }
/** * Effectively zoom to the bounds that the user drew on the map. * * @param worldBounds * The result of the user's dragging on the map, expressed in world space. */ public void execute(Bbox worldBounds) { mapPresenter.getViewPort().applyBounds(worldBounds); } }
@Override public Bbox transform(Bbox bounds, Space from, Space to) { return mapPresenter.getViewPort().transform(bounds, convert(from), convert(to)); }
@Override public void onViewPortTranslated(ViewPortTranslatedEvent event) { if (mask != null) { mask.setUserBounds(event.getViewPort().getBounds()); } }
/** * * Update the view of the map when touching and dragging. * * @param event */ protected void updateView(TouchEvent<?> event, boolean isTouchEnded) { Coordinate end = getMidPoint(event); Coordinate beginWorld = mapPresenter.getViewPort().transform(touchedOrigin, RenderSpace.SCREEN, RenderSpace.WORLD); Coordinate endWorld = mapPresenter.getViewPort().transform(end, RenderSpace.SCREEN, RenderSpace.WORLD); double x = mapPresenter.getViewPort().getPosition().getX() + beginWorld.getX() - endWorld.getX(); double y = mapPresenter.getViewPort().getPosition().getY() + beginWorld.getY() - endWorld.getY(); if (isTouchEnded) { mapPresenter.getViewPort().applyPosition(new Coordinate(x, y)); } else { mapPresenter.getViewPort().dragToPosition(new Coordinate(x, y)); } touchedOrigin = end; }
public void onClick(ClickEvent event) { int index = viewPort.getZoomStrategy().getZoomStepIndex(viewPort.getScale()); try { viewPort.applyScale(viewPort.getZoomStrategy().getZoomStepScale(index - 1)); } catch (IllegalArgumentException e) { } event.stopPropagation(); } }, ClickEvent.getType());