⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zoomintool.java~519~

📁 一个很有特点的地图平台,可以以动画方试展现电子地图,有拉近,拉远,滑动功能,最主要的是它是一个地图维护台,处理地图到数据库的数据导入
💻 JAVA~519~
字号:
package mapcenter.maptools;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ZoomInTool extends MapTool{
  private int x1,y1,x2,y2;
  private boolean DraggFlag = false;

  public ZoomInTool() {
    super("/image/zoomin1.gif","/image/zoomin2.gif","放大","放大工具",'O');
    ImageIcon icon = new ImageIcon(getClass().getResource("/image/zoomin.gif"));
    Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(icon.getImage(),new Point(0,0),"放大");
    super.cursor = cursor;
  }

  public void actionPerformed(ActionEvent evt) {
    super.actionPerformed(evt);
  }
  //============= MouseListener接口实现 =============
  public void mouseEntered(MapMouse evt) {}
  public void mouseExited(MapMouse evt) {}
  public void mouseClicked(MapMouse evt) {}
  public void mouseMoved(MapMouse evt) {}

  public void mousePressed(MapMouse evt) {
    x1 = evt.getX();
    y1 = evt.getY();
  }

  public void mouseDragged(MapMouse evt) {
    //======= 绘制轨迹线 ======
    Graphics grap = mapView.getGraphics();
    Color color = grap.getColor();
    grap.setColor(Color.black);
    grap.setXORMode(Color.white);
    if(x2 != 0 && y2 != 0){
      grap.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y1-y2));
    }
    x2 = evt.getX();
    y2 = evt.getY();
    grap.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y1-y2));
    grap.setColor(color);
    grap.setPaintMode();
    DraggFlag = true;
  }

  public void mouseReleased(MapMouse evt){
    try{
      Image renderImage = mapView.getMapHandle().getImg();
      int mapWidth = renderImage.getWidth(null);
      int mapHeight = renderImage.getHeight(null);
      int containW = mapView.getWidth();
      int containH = mapView.getHeight();
      int marginHor = (mapWidth - containW)/2;
      int marginVer = (mapHeight - containH)/2;
      double centerX = 0, centerY = 0, zoompen = 0.5;

      if(DraggFlag == true){
        centerX = x1 + (x2-x1)/2 + marginHor;
        centerY = y1 + (y2-y1)/2 + marginVer;
        if(Math.abs(x2-x1) > 10)zoompen = Math.abs(x2-x1)/mapView.getWidth();
      }else{
        centerX = x1 + marginHor;
        centerY = y1 + marginVer;
      }
      zoomMoveing(centerX,centerY,zoompen);
      mapView.getMapHandle().zoomMap(centerX,centerY,zoompen);
      mapView.renderMap();
      x1=x2=y1=y2=0;
      DraggFlag = false;
    }catch(Exception e){log.error(e);}
  }

  //============= KeyListener接口实现 =============
  public void keyTyped(KeyEvent evt) {}
  public void keyPressed(KeyEvent evt) {}
  public void keyReleased(KeyEvent evt) {}

  //============= MapPainter接口实现 ===============
  public void paintOnMap(Graphics g) {
  }
  //============= ToolTipTextSetter接口实现 ========
  public String getToolTipText(MapMouse evt) {return "放大";}

  public void startWait(){

  }
  public void stopWait(){

  }
  class MovingThread extends Thread{
    private double pointX,pointY,zoompen;

    public MovingThread(double pointX,double pointY,double zoompen){
      this.pointX = pointX;
      this.pointY = pointY;
      this.zoompen = zoompen;
    }
    public void run(){
      Image renderImage = mapView.getMapHandle().getImg();
      Image bufferImage = mapView.getBuffImg();
      Graphics bufferGrap = bufferImage.getGraphics();
      double mapWidth = renderImage.getWidth(null);
      double mapHeight = renderImage.getHeight(null);
      double containW = mapView.getWidth();
      double containH = mapView.getHeight();
      double marginHor = (mapWidth - containW) / 2;
      double marginVer = (mapHeight - containH) / 2;
      int moveCount = 20;
      int interval = 30;
      double WidthStep = (mapWidth / zoompen - mapWidth) / moveCount;
      double HeightStep = (mapHeight / zoompen - mapHeight) / moveCount;
      double ScreenX = pointX - marginHor;
      double ScreenY = pointY - marginVer;
      double HorStep = (mapWidth / 2 - pointX) / moveCount;
      double VerStep = (mapHeight / 2 - pointY) / moveCount;
      for (int i = 0; i < moveCount; i++) {
        try{Thread.sleep(interval);}catch(Exception e){}
        ScreenX += HorStep;
        ScreenY += VerStep;
        mapWidth += WidthStep;
        mapHeight += HeightStep;
        double left = pointX * (mapWidth/renderImage.getWidth(null)) - ScreenX;
        double top = pointY * (mapHeight/renderImage.getHeight(null)) - ScreenY;
        bufferGrap.clearRect(0, 0, (int)containW, (int)containH);
        bufferGrap.drawImage(renderImage, -(int)left, -(int)top, (int)mapWidth, (int)mapHeight, null);
        mapView.getGraphics().drawImage(bufferImage, 0, 0, null);
      }
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -