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

📄 rulertool.java

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

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.mapinfo.util.*;
import com.mapinfo.mapj.*;

public class RulerTool extends MapTool{
  private int clickX = Integer.MIN_VALUE;
  private int clickY = Integer.MIN_VALUE;
  private int moveX = Integer.MIN_VALUE;
  private int moveY = Integer.MIN_VALUE;
  private boolean initFlag = false;
  private double distanceSum = 0;

  public RulerTool() {
    super("/image/ruler1.gif","/image/ruler2.gif","测距","测距工具",'O');
    ImageIcon icon = new ImageIcon(getClass().getResource("/image/ruler.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 mousePressed(MapMouse evt) {}
  public void mouseDragged(MapMouse evt) {}
  public void mouseReleased(MapMouse evt) {}

  public void mouseClicked(MapMouse evt) {
    Graphics g = mapView.getGraphics();
    Color c = g.getColor();
    g.setColor(Color.black);

    int button = evt.getButton();
    switch (button){
      case 1://鼠标左键
        if(initFlag == true){
          g.drawLine(clickX, clickY, evt.getX(), evt.getY());//增量画线
          try{
            MapJ mapJ = mapView.getMapHandle().getMapJ();
            DoublePoint startPoint = mapJ.transformScreenToNumeric(new DoublePoint(clickX,clickY));
            DoublePoint endPoint = mapJ.transformScreenToNumeric(evt.getDoublePoint());
            double distance = mapView.getMapHandle().getMapJ().cartesianDistance(startPoint,endPoint);
            String distanMsg = String.valueOf((int)(distance*1000)) + "米";
            g.drawString(distanMsg, evt.getX(), evt.getY());//标记距离
            distanceSum += distance;
          }catch(Exception e){log.error(e);}
        }
        clickX = evt.getX();
        clickY = evt.getY();
        initFlag = true;
        break;
      case 3://鼠标右键
        if(initFlag == false)return;
        String distanMsg = "距离合计" + String.valueOf((int)(distanceSum*1000)) + "米";
        g.drawString(distanMsg, evt.getX(),evt.getY());//标记总距离
        g.setXORMode(Color.white);
        g.drawLine(clickX,clickY,moveX,moveY);
        clickX = Integer.MIN_VALUE;
        clickY = Integer.MIN_VALUE;
        moveX = Integer.MIN_VALUE;
        moveY = Integer.MIN_VALUE;
        distanceSum = 0;
        initFlag = false;
        break;
    }
    g.setColor(c);
    g.setPaintMode();
  }

  public void mouseMoved(MapMouse evt) {
    if(initFlag == false)return;
    //======= 绘制轨迹线 ======
    Graphics g = mapView.getGraphics();
    Color c = g.getColor();
    g.setColor(Color.black);
    g.setXORMode(Color.white);
    if(clickX != Integer.MIN_VALUE && moveX != Integer.MIN_VALUE){
      g.drawLine(clickX,clickY,moveX,moveY);
    }
    g.drawLine(clickX, clickY, evt.getX(), evt.getY());
    g.setColor(c);
    g.setPaintMode();
    moveX = evt.getX();
    moveY = evt.getY();
  }

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

  public void paintOnMap(Graphics g) { }

  //============= ToolTipTextSetter接口实现 ========
  public String getToolTipText(MapMouse evt) {return "测距";}

}

⌨️ 快捷键说明

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