用j2me开发GIS程序-地图绘制2[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

地图渲染类MapCanvas 实现地图漫游和缩放
public class MapCanvas extends Canvas
{
    private MIDlet mapMidlet;
    private int lines[][] = { { 10, 10, 10, 20, 20, 20, 20, 30 },
            { 50, 50, 70, 90, 60, 80 } };
    private int points[][] = { { 30, 30, 60, 90 } }; //测试数据
    private static int iX = 0; //移动偏移量X
    private static int iY = 0; //移动偏移量Y
    private static float fZoom = 1.0F; //缩放参数
    private static final short iStep = 10; //移动步长
    private String message = null;
    
    public MapCanvas(MIDlet midlet) {
        mapMidlet = midlet;
        message = "J2ME Map 0.1";
    }

    protected void paint(Graphics g) {
        //清空屏幕
        g.setColor(0, 0, 0);
        g.fillRect(0, 0, getWidth(), getHeight());
        
        //画线
        for (int l = 0; l < lines.length; l++) {
            int mline[] = lines[l];
            for (int j = 0; j < mline.length - 2; j += 2) {
                int word1 = iX + (int) (mline[j] * fZoom);
                int word2 = iY + (int) (mline[j + 1] * fZoom);
                int word3 = iX + (int) (mline[j + 2] * fZoom);
                int word4 = iY + (int) (mline[j + 3] * fZoom);
                g.setColor(255,255,255);
                g.drawLine(word1, word2, word3, word4);
            }

        }

        //画矩形和文字
        for (int l = 0; l < points.length; l++) {
            int mpoint[] = points[l];
            for (int j = 0; j < mpoint.length; j += 2) {
                int word1 = iX + (int) ((float) mpoint[j] * fZoom);
                int word2 = iY + (int) ((float) mpoint[j + 1] * fZoom);
                g.setColor(255, 0, 0);
                g.fillRoundRect(word1, word2, 6, 6, 3, 3);
                g.drawString("No." + j, word1, word2, 0x10 | 0x1);
            }

        }

        //操作提示信息
        g.setColor(255, 255, 255);
        g.drawString(message, getWidth() / 2, 0, 0x10 | 0x1);
    }

    /**
     * 按键事件处理
     * @param keyCode
     */
    protected void keyAction(int keyCode) {
        if (keyCode == getKeyCode(8)) {
            message = "CENTER X=" + iX + " Y=" + iY;
            iX = 0;
            iY = 0;
        } else if (keyCode == getKeyCode(2)) {
            message = "LEFT X=" + iX + " Y=" + iY;
            iX -= iStep;
        } else if (keyCode == getKeyCode(5)) {
            message = "RIGHT X=" + iX + " Y=" + iY;
            iX += iStep;
        } else if (keyCode == getKeyCode(1)) {
            message = "UP X=" + iX + "

本文关键:用j2me开发GIS程序-地图绘制2
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top