0

JMapViewer で特定の座標に画像を読み込もうとしています。誰でも私が使用しなければならないクラスを提案したり、ちょっとした例を提供したりできますか?

4

2 に答える 2

1
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;

import org.openstreetmap.gui.jmapviewer.Coordinate;
import org.openstreetmap.gui.jmapviewer.MapMarkerCircle;
import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;

/**
 * @author wellsantos@wellsantos.com
 * @created 18/09/2014
 */
public class IconMarker extends MapMarkerCircle implements MapMarker {

    private Image image;

    public IconMarker(Coordinate coord, Image image) {
        this(coord, 1, image);
    }

    public IconMarker(Coordinate coord, double radius, Image image) {
        super(coord, radius);
        this.image = image;
    }

    @Override
    public void paint(Graphics g, Point position, int radio) {
        double r = this.getRadius();
        int width = (int) (this.image.getWidth(null) * r);
        int height = (int) (this.image.getHeight(null) * r);
        int w2 = width / 2;
        int h2 = height / 2;
        g.drawImage(this.image, position.x - w2, position.y - h2, width, height, null);
        this.paintText(g, position);
    }

    public Image getImage() {
        return this.image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

}


// ...... main

    JMapViewer mapViewer = new JMapViewer();
    this.setLayout(new BorderLayout());
    this.add(this.mapViewer, BorderLayout.CENTER);

    List<MapMarker> mapMarkerList = new ArrayList<MapMarker>();
    mapMarkerList.add(new IconMarker(new Coordinate(0.5, 0.5), this.image));
    this.mapViewer.setMapMarkerList(mapMarkerList);
于 2014-09-18T21:55:06.540 に答える
0
   package geovista.jmapviewer;

//License: GPL. Copyright 2008 by Jan Peter Stotz

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

import geovista.jmapviewer.interfaces.TileCache;
import geovista.jmapviewer.interfaces.TileSource;

/**
 * Holds one map tile. Additionally the code for loading the tile image and
 * painting it is also included in this class.
 *
 * @author Jan Peter Stotz
 */
public class Tile {

    /**
     * Hourglass image that is displayed until a map tile has been loaded
     */
    public static BufferedImage LOADING_IMAGE;
    public static BufferedImage ERROR_IMAGE;

    static {
        try {
            LOADING_IMAGE = ImageIO.read(JMapViewer.class.getResourceAsStream("images/hourglass.png"));
            ERROR_IMAGE = ImageIO.read(JMapViewer.class.getResourceAsStream("images/error.png"));
        } catch (Exception e1) {
            LOADING_IMAGE = null;
            ERROR_IMAGE = null;
        }
    }

続きを読む.. Google のページ

于 2014-07-27T17:28:24.210 に答える