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

📄 exampleapplication.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// **********************************************************************
// 
// <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/plugin/esri/ExampleApplication.java,v
// $
// $RCSfile: ExampleApplication.java,v $
// $Revision: 1.2.2.2 $
// $Date: 2005/08/09 21:17:49 $
// $Author: dietrick $
// 
// **********************************************************************

package com.bbn.openmap.plugin.esri;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Vector;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.Layer;
import com.bbn.openmap.LayerHandler;
import com.bbn.openmap.MapBean;
import com.bbn.openmap.MouseDelegator;
import com.bbn.openmap.dataAccess.shape.DbfTableModel;
import com.bbn.openmap.dataAccess.shape.EsriGraphicList;
import com.bbn.openmap.dataAccess.shape.EsriPolyline;
import com.bbn.openmap.dataAccess.shape.EsriPolylineList;
import com.bbn.openmap.dataAccess.shape.output.DbfOutputStream;
import com.bbn.openmap.dataAccess.shape.output.ShpOutputStream;
import com.bbn.openmap.dataAccess.shape.output.ShxOutputStream;
import com.bbn.openmap.event.NavMouseMode;
import com.bbn.openmap.event.SelectMouseMode;
import com.bbn.openmap.gui.DefaultHelpMenu;
import com.bbn.openmap.gui.LayersMenu;
import com.bbn.openmap.gui.MouseModePanel;
import com.bbn.openmap.gui.OMToolSet;
import com.bbn.openmap.gui.Tool;
import com.bbn.openmap.gui.ToolPanel;
import com.bbn.openmap.layer.GraticuleLayer;
import com.bbn.openmap.omGraphics.OMGraphic;

/*
 * ExampleApplication illustrates three uses of the EsriLayer: 1) how
 * to create new geometry and tabular data at run time, 2) how to load
 * geometry and tabular data from a file system or a web server, and
 * 3) how to save a layer conforming to Esri's shape file format
 * specification. @author Doug Van Auken
 */
public class ExampleApplication extends JFrame {
    private EsriLayer _drawableLayer = null;
    private MapBean _mapBean = null;
    private Layer _layers[] = null;
    private LayerHandler _layerHandler = null;
    private OMToolSet _omts = null;
    private ToolPanel _toolPanel = null;
    private JMenuBar _menuBar = null;
    private MouseDelegator _mouseDelegator = null;
    private MouseModePanel _mouseModePanel = null;

    /* Menu bar declarations */
    private DefaultHelpMenu _defaultHelpMenu = null;
    private JMenu _fileMenu = null;
    private LayersMenu _layersMenu = null;
    private JMenuItem _openFileChooser = null;
    private JMenuItem _saveFileChooser = null;
    private JMenuItem _showTable = null;
    private JMenuItem _httpExample = null;
    private JMenuItem _exit = null;
    private JMenuItem _addShape = null;
    private JMenuItem _setModel = null;

    /*
     * Constructor.
     */
    public ExampleApplication() {
        _mapBean = new MapBean();
        _menuBar = new JMenuBar();
        _toolPanel = new ToolPanel();
        _omts = new OMToolSet();
        _omts.findAndInit(_mapBean);
        _mouseDelegator = new MouseDelegator(_mapBean);
        _mouseModePanel = new MouseModePanel(_mouseDelegator);

        NavMouseMode nmm = new NavMouseMode();
        SelectMouseMode smm = new SelectMouseMode();
        _mouseDelegator.addMouseMode(nmm);
        _mouseDelegator.addMouseMode(smm);

        setupUI();
    }

    /**
     * Presents a JOptionPane to the user to enable them to specify
     * which file to retreive
     * 
     * @return A string denoting the location of the file to retreive
     */
    public String getRemoteFile() {
        Object urls[] = {
                "http://www.somewebserver.com/omdemo/resources/cities",
                "http://www.somewebserver.com/omdemo/resources/rivers",
                "http://www.somewebserver.com/omdemo/resources/southwest",
                "http://www.somewebserver.com/omdemo/resources/states" };
        String url = (String) JOptionPane.showInputDialog(null,
                "Select a url",
                "Input",
                JOptionPane.INFORMATION_MESSAGE,
                null,
                urls,
                urls[0]);
        return url;
    }

    /**
     * Presents a JOptionPane to the user to enable them to pick which
     * layer should be persisted to file.
     * 
     * @return The layer the user selected
     */
    private EsriLayer pickEsriLayer() {
        Layer[] layers = _layerHandler.getLayers();
        Vector vector = new Vector();
        for (int n = 0; n <= layers.length - 1; n++) {
            if (layers[n] instanceof EsriLayer) {
                String name = layers[n].getName();
                vector.add(name);
            }
        }
        Object[] objects = vector.toArray();
        if (objects.length > 0) {
            String selected = (String) JOptionPane.showInputDialog(null,
                    "Choose one",
                    "Input",
                    JOptionPane.INFORMATION_MESSAGE,
                    null,
                    objects,
                    objects[0]);
            for (int n = 0; n <= layers.length - 1; n++) {
                String name = layers[n].getName();
                if (name.equalsIgnoreCase(selected)) {
                    return (EsriLayer) layers[n];
                }
            }
        }
        return null;
    }

    /**
     * Sets up user interface.
     */
    public void setupUI() {
        getContentPane().setLayout(new BorderLayout());
        setSize(640, 480);
        _mapBean.setCenter(new LatLonPoint(43.0f, -95.0f));
        _mapBean.setScale(120000000f);
        _layers = new Layer[1];

        Properties props = new Properties();
        props.put("prettyName", "Graticule");
        props.put("showRuler", "true");
        props.put("show1And5Lines", "true");
        props.put("threshold", "2");
        props.put("10DegreeColor", "FF000000");
        props.put("5DegreeColor", "FF009900");
        props.put("1DegreeColor", "FF003300");
        props.put("equatorColor", "FFFF0000");
        props.put("dateLineColor", "FF000099");
        props.put("specialLineColor", "FF000000");
        props.put("textColor", "FF000000");
        GraticuleLayer graticule = new GraticuleLayer();
        graticule.setProperties(props);
        _layers[0] = graticule;

        //Finish setting up the GUI.
        _layerHandler = new LayerHandler(_layers);
        _layerHandler.addLayerListener(_mapBean);
        _layersMenu = new LayersMenu(_layerHandler);
        _fileMenu = new JMenu("File");

        _httpExample = new JMenuItem("HTTP Example");
        _httpExample.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String url = stripExtension(getRemoteFile(), "shp");
                    URL dbf = null, shp = null, shx = null;
                    dbf = new URL(url + ".dbf");
                    shp = new URL(url + ".shp");
                    shx = new URL(url + ".shx");
                    EsriLayer layer = new EsriLayer(url, dbf, shp, shx);
                    _layerHandler.addLayer(layer);
                } catch (Exception exception) {
                    System.out.println(exception);
                }
            }
        });

        _showTable = new JMenuItem("Show Table");
        _showTable.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                EsriLayer layer = pickEsriLayer();
                showTable(layer);
            }
        });

        _setModel = new JMenuItem("Set Model");
        _setModel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                try {
                    _drawableLayer = new EsriLayer("Drawable Layer", 3, 1); //Create
                                                                            // a
                                                                            // polyline
                                                                            // layer
                    _drawableLayer.setName("Drawable Layer");
                    _layerHandler.addLayer(_drawableLayer);

⌨️ 快捷键说明

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