Package com.bbn.openmap.layer.location

Source Code of com.bbn.openmap.layer.location.URLRasterLocation

// **********************************************************************
//
// <copyright>
//
//  BBN Technologies
//  10 Moulton Street
//  Cambridge, MA 02138
//  (617) 873-8000
//
//  Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/location/URLRasterLocation.java,v $
// $RCSfile: URLRasterLocation.java,v $
// $Revision: 1.5.2.3 $
// $Date: 2005/09/13 14:39:56 $
// $Author: dietrick $
//
// **********************************************************************

package com.bbn.openmap.layer.location;

/*  Java Core  */
import java.net.URL;

import javax.swing.ImageIcon;

import com.bbn.openmap.omGraphics.OMRaster;
import com.bbn.openmap.util.PropUtils;

/**
* A Location that takes an URL for an image and creates a Raster for
* a Location marker. The URL should be the contents of an image file
* (gif, jpeg) that an ImageIcon object can use to create an Image
* object. The string for an icon can be a path to a resource, file or
* URL, and the URLRasterLocation will convert it to a URL.
*/
public class URLRasterLocation extends Location {
    /** The spacing between the label and the outside of the image. */
    public int SPACING = 0;

    /**
     * A constructor to enable creation of subclasses.
     */
    public URLRasterLocation() {}
   
    /**
     * Create a ByteRasterLocation at a latitude/longtude location.
     *
     * @param latitude latitide in decimal degrees
     * @param longitude longitude in decimal degrees.
     * @param name the label for the location.
     * @param iconURL a string to a URL for an image
     */
    public URLRasterLocation(float latitude, float longitude, String name,
            String iconURL) {
        super(latitude, longitude, name, getIconRaster(latitude,
                longitude,
                iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }

    }

    /**
     * Create a ByteRasterLocation at a latitude/longtude location.
     *
     * @param latitude latitide in decimal degrees
     * @param longitude longitude in decimal degrees.
     * @param name the label for the location.
     * @param iconURL a URL for an image
     */
    public URLRasterLocation(float latitude, float longitude, String name,
            URL iconURL) {
        super(latitude, longitude, name, getIconRaster(latitude,
                longitude,
                iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }

    }

    /**
     * Create a ByteRasterLocation at a screen x/y location.
     *
     * @param x horizontal pixel screen location from the the left
     *        side of the map.
     * @param y vertical pixel screen location, from the top of the
     *        map.
     * @param name the label for the location.
     * @param iconURL a String for a URL for an image
     */
    public URLRasterLocation(int x, int y, String name, String iconURL) {
        super(x, y, name, getIconRaster(x, y, iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Create a ByteRasterLocation at a screen x/y location.
     *
     * @param x horizontal pixel screen location from the the left
     *        side of the map.
     * @param y vertical pixel screen location, from the top of the
     *        map.
     * @param name the label for the location.
     * @param iconURL a URL for an image
     */
    public URLRasterLocation(int x, int y, String name, URL iconURL) {
        super(x, y, name, getIconRaster(x, y, iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Create a ByteRasterLocation at a screen x/y location.
     *
     * @param latitude latitide in decimal degrees
     * @param longitude longitude in decimal degrees.
     * @param xOffset horizontal pixel screen location from the
     *        longitude map point.
     * @param yOffset vertical pixel screen location, from the
     *        latitide map point.
     * @param name the label for the location.
     * @param iconURL a String for a URL for an image
     */
    public URLRasterLocation(float latitude, float longitude, int xOffset,
            int yOffset, String name, String iconURL) {
        super(latitude,
              longitude,
              xOffset,
              yOffset,
              name,
              getIconRaster(latitude, longitude, xOffset, yOffset, iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Create a ByteRasterLocation at a screen x/y location.
     *
     * @param latitude latitide in decimal degrees
     * @param longitude longitude in decimal degrees.
     * @param xOffset horizontal pixel screen location from the
     *        longitude map point.
     * @param yOffset vertical pixel screen location, from the
     *        latitide map point.
     * @param name the label for the location.
     * @param iconURL a URL for an image
     */
    public URLRasterLocation(float latitude, float longitude, int xOffset,
            int yOffset, String name, URL iconURL) {
        super(latitude,
              longitude,
              xOffset,
              yOffset,
              name,
              getIconRaster(latitude, longitude, xOffset, yOffset, iconURL));

        if (location instanceof OMRaster) {
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param lat latitide in decimal degrees
     * @param lon longitude in decimal degrees.
     * @param iconURL a URL for an image
     */
    public static OMRaster getIconRaster(float lat, float lon, String iconURL) {
        URL url = getIconRasterURL(iconURL);
        if (url == null)
            return null;

        return getIconRaster(lat, lon, url);
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param lat latitide in decimal degrees
     * @param lon longitude in decimal degrees.
     * @param iconURL a URL for an image
     */
    public static OMRaster getIconRaster(float lat, float lon, URL iconURL) {

        ImageIcon icon = new ImageIcon(iconURL);
        if (icon == null)
            return null;

        int offX = icon.getIconWidth() / 2;
        int offY = icon.getIconHeight() / 2;
        return new OMRaster(lat, lon, -offX, -offY, icon);
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param x horizontal pixel screen location from the the left
     *        side of the map.
     * @param y vertical pixel screen location, from the top of the
     *        map.
     * @param iconURL a String for a URL for an image
     */
    public static OMRaster getIconRaster(int x, int y, String iconURL) {
        URL url = getIconRasterURL(iconURL);
        if (url == null)
            return null;

        return getIconRaster(x, y, url);
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param x horizontal pixel screen location from the the left
     *        side of the map.
     * @param y vertical pixel screen location, from the top of the
     *        map.
     * @param iconURL a URL for an image
     */
    public static OMRaster getIconRaster(int x, int y, URL iconURL) {
        ImageIcon icon = new ImageIcon(iconURL);
        if (icon == null)
            return null;

        int offX = icon.getIconWidth() / 2;
        int offY = icon.getIconHeight() / 2;
        return new OMRaster(x - offX, y - offY, icon);
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param lat latitide in decimal degrees
     * @param lon longitude in decimal degrees.
     * @param x horizontal pixel screen location from the longitude
     *        map point.
     * @param y vertical pixel screen location, from the latitide map
     *        point.
     * @param iconURL a String for URL for an image
     */
    public static OMRaster getIconRaster(float lat, float lon, int x, int y,
                                         String iconURL) {
        URL url = getIconRasterURL(iconURL);
        if (url == null)
            return null;

        return getIconRaster(lat, lon, x, y, url);
    }

    /**
     * Create an OMRaster at a latitude/longitude, from a image URL.
     *
     * @param lat latitide in decimal degrees
     * @param lon longitude in decimal degrees.
     * @param x horizontal pixel screen location from the longitude
     *        map point.
     * @param y vertical pixel screen location, from the latitide map
     *        point.
     * @param iconURL a URL for an image
     */
    public static OMRaster getIconRaster(float lat, float lon, int x, int y,
                                         URL iconURL) {
        ImageIcon icon = new ImageIcon(iconURL);
        if (icon == null)
            return null;

        int offX = icon.getIconWidth() / 2;
        int offY = icon.getIconHeight() / 2;
        return new OMRaster(lat, lon, x - offX, y - offY, icon);
    }

    /**
     * Create an ImageIcon from a String to an image URL.
     *
     * @param iconURL can be a path to a resource, file or URL.
     */
    public static URL getIconRasterURL(String iconURL) {
        try {
            return PropUtils.getResourceOrFileOrURL(null, iconURL);
        } catch (java.net.MalformedURLException mue) {
            throw new com.bbn.openmap.util.HandleError(mue);
        }
    }

    /**
     * Given a new latitude/longitude, reposition the graphic and
     * label.
     */
    public void setGraphicLocations(float latitude, float longitude) {
        if (location instanceof OMRaster) {
            OMRaster ras = (OMRaster) location;
            ras.setLat(latitude);
            ras.setLon(longitude);

            label.setLat(latitude);
            label.setLon(longitude);
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Given a new x/y screen location, reposition the graphic and
     * label.
     */
    public void setGraphicLocations(int x, int y) {
        if (location instanceof OMRaster) {
            OMRaster ras = (OMRaster) location;
            ras.setX(x);
            ras.setY(y);

            label.setX(x);
            label.setY(y);
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }

    /**
     * Given a new latitude/longitude with x/y offset points,
     * reposition the graphic and label.
     */
    public void setGraphicLocations(float latitude, float longitude,
                                    int offsetX, int offsetY) {
        if (location instanceof OMRaster) {
            OMRaster ras = (OMRaster) location;
            ras.setLat(latitude);
            ras.setLon(longitude);
            ras.setX(offsetX);
            ras.setY(offsetY);

            label.setLat(latitude);
            label.setLon(longitude);
            label.setX(offsetX);
            label.setY(offsetY);
            setHorizontalLabelBuffer((((OMRaster) location).getWidth() / 2)
                    + SPACING);
        }
    }
}
TOP

Related Classes of com.bbn.openmap.layer.location.URLRasterLocation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.