Class JXMapViewer

  • All Implemented Interfaces:
    ImageObserver, MenuContainer, DesignMode, Serializable, Accessible, Scrollable, nl.bebr.mapviewer.data.MapViewer<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>>

    public class JXMapViewer
    extends org.jdesktop.swingx.JXPanel
    implements DesignMode, nl.bebr.mapviewer.data.MapViewer<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>>
    A tile oriented map component that can easily be used with tile sources on the web like Google and Yahoo maps, satellite data such as NASA imagery, and also with file based sources like pre-processed NASA images. A known map provider can be used with the SLMapServerInfo, which will connect to a 2km resolution version of NASA's Blue Marble Next Generation imagery. @see SLMapServerInfo for more information. Note, the JXMapViewer has three center point properties. The addressLocation property represents an abstract center of the map. This would usually be something like the first item in a search result. It is a GeoPosition. The centerPosition property represents the current center point of the map. If the user pans the map then the centerPosition point will change but the addressLocation will not. Calling recenterToAddressLocation() will move the map back to that center address. The center property represents the same point as the centerPosition property, but as a Point2D in pixel space instead of a GeoPosition in lat/long space. Note that the center property is a Point2D in the entire world bitmap, not in the portion of the map currently visible. You can use the getViewportBounds() method to find the portion of the map currently visible and adjust your calculations accordingly. Changing the center property will change the centerPosition property and vice versa. All three properties are bound.
    Author:
    Joshua.Marinacci@sun.com
    See Also:
    SLMapServerInfo, Serialized Form
    • Constructor Detail

      • JXMapViewer

        public JXMapViewer()
        Create a new JXMapViewer. By default it will use the EmptyTileFactory
    • Method Detail

      • initInputListeners

        protected void initInputListeners()
      • setDesignTime

        public void setDesignTime​(boolean b)
        Indicate that the component is being used at design time, such as in a visual editor like NetBeans' Matisse
        Specified by:
        setDesignTime in interface DesignMode
        Parameters:
        b - indicates if the component is being used at design time
      • isDesignTime

        public boolean isDesignTime()
        Indicates whether the component is being used at design time, such as in a visual editor like NetBeans' Matisse
        Specified by:
        isDesignTime in interface DesignMode
        Returns:
        boolean indicating if the component is being used at design time
      • drawMapTiles

        protected void drawMapTiles​(Graphics g,
                                    int zoom,
                                    Rectangle viewportBounds)
        Draw the map tiles. This method is for implementation use only.
        Parameters:
        g - Graphics
        zoom - zoom level to draw at
        viewportBounds - the bounds to draw within
      • setOverlayPainter

        public void setOverlayPainter​(org.jdesktop.swingx.painter.Painter<JXMapViewer> overlay)
        Sets the map overlay. This is a Painter which will paint on top of the map. It can be used to draw waypoints, lines, or static overlays like text messages.
        Parameters:
        overlay - the map overlay to use
        See Also:
        org.jdesktop.swingx.painters.Painter
      • getOverlayPainter

        public org.jdesktop.swingx.painter.Painter<JXMapViewer> getOverlayPainter()
        Gets the current map overlay
        Returns:
        the current map overlay
      • setRecenterOnClickEnabled

        public void setRecenterOnClickEnabled​(boolean b)
        Sets whether the map should recenter itself on mouse clicks (middle mouse clicks?)
        Parameters:
        b - if should recenter
      • isRecenterOnClickEnabled

        public boolean isRecenterOnClickEnabled()
        Indicates if the map should recenter itself on mouse clicks.
        Returns:
        boolean indicating if the map should recenter itself
      • getLoadingImage

        public Image getLoadingImage()
        A property for an image which will be display when an image is still loading.
        Returns:
        the current property value
      • setLoadingImage

        public void setLoadingImage​(Image loadingImage)
        A property for an image which will be display when an image is still loading.
        Parameters:
        loadingImage - the new property value
      • setTileFactory

        public void setTileFactory​(nl.bebr.mapviewer.data.TileFactory<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>> factory)
        Set TileFactory
        Parameters:
        factory -
      • setZoom

        public void setZoom​(int zoom)
        Set zoom level
        Parameters:
        zoom -
      • setAddressLocation

        public void setAddressLocation​(nl.bebr.mapviewer.data.GeoPosition addressLocation)
        Set GeoPosition address of the center of the map
        Parameters:
        addressLocation -
      • getTileFactory

        public nl.bebr.mapviewer.data.TileFactory<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>> getTileFactory()
        Specified by:
        getTileFactory in interface nl.bebr.mapviewer.data.MapViewer<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>>
      • getZoom

        public int getZoom()
        Specified by:
        getZoom in interface nl.bebr.mapviewer.data.MapViewer<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>>
      • getViewportBounds

        public Rectangle getViewportBounds()
        Specified by:
        getViewportBounds in interface nl.bebr.mapviewer.data.MapViewer<BufferedImage,​nl.bebr.mapviewer.data.Tile<BufferedImage>>
      • getCenter

        public Point2D getCenter()
        Gets center of the map in pixel coordinates
        Returns:
      • setCenter

        public void setCenter​(Point2D center)
        Sets the new center of the map in pixel coordinates.
        Parameters:
        center - the new center of the map in pixel coordinates
      • setCenterPosition

        public void setCenterPosition​(nl.bebr.mapviewer.data.GeoPosition geoPosition)
        Sets center position of the map
        Parameters:
        geoPosition - center position of the map
      • getCenterPosition

        public nl.bebr.mapviewer.data.GeoPosition getCenterPosition()
        Gets center position of the map
        Returns:
      • getAddressLocation

        public nl.bebr.mapviewer.data.GeoPosition getAddressLocation()
        Gets the current address location of the map. This property does not change when the user pans the map. This property is bound.
        Returns:
        the current map location (address)
      • setRestrictOutsidePanning

        public void setRestrictOutsidePanning​(boolean restrict)
      • setHorizontalWrapped

        public void setHorizontalWrapped​(boolean wrapped)
      • markZoomArea

        public void markZoomArea​(Point startPoint,
                                 Point endPoint)
        Paints zoom selection area rectangle
        Parameters:
        startPoint -
        endPoint -
      • zoomToArea

        public void zoomToArea​(Point start,
                               Point end)
        Zoom the map to specified area
        Parameters:
        start -
        end -
      • setZoomEnabled

        public void setZoomEnabled​(boolean zoomEnabled)
      • isZoomEnabled

        public boolean isZoomEnabled()
      • enableZoom

        protected void enableZoom()
      • disableZoom

        protected void disableZoom()
      • setTypeSelectionEnabled

        public void setTypeSelectionEnabled​(boolean typeSelectionEnabled,
                                            nl.bebr.mapviewer.data.TileFactoryInfo... tileFactoryInfos)
      • isTypeSelectionEnabled

        public boolean isTypeSelectionEnabled()
      • setZoomFromGeoPosition

        public void setZoomFromGeoPosition​(nl.bebr.mapviewer.data.GeoPosition start,
                                           nl.bebr.mapviewer.data.GeoPosition end)
      • setDoubleClickZoomEnabled

        public void setDoubleClickZoomEnabled​(boolean enabled)
      • isDoubleClickZoomEnabled

        public boolean isDoubleClickZoomEnabled()
      • getScreenCoordinates

        public nl.bebr.mapviewer.data.GeoPosition[] getScreenCoordinates()
      • convertGeoPositionToPoint

        public Point2D convertGeoPositionToPoint​(nl.bebr.mapviewer.data.GeoPosition pos)
      • convertPointToGeoPosition

        public nl.bebr.mapviewer.data.GeoPosition convertPointToGeoPosition​(Point2D pt)