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

📄 compositerenderapplet.java

📁 mapxtreme java实现的胖客户端webgis
💻 JAVA
字号:
import com.mapinfo.mapj.*;
import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;
import java.net.*;
import javax.swing.*;
import java.awt.Color;
import java.awt.Image;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.io.InputStream;
import com.mapinfo.mapxtreme.client.CompositeRenderer;
import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;
import java.awt.Color;
import com.mapinfo.graphics.Rendition;
import com.mapinfo.graphics.RenditionImpl;
import com.mapinfo.graphics.Renderer;
import com.mapinfo.theme.*;
import java.io.*;
import java.lang.*;
import com.mapinfo.mapj.*;
import com.mapinfo.mapxtreme.client.MapXtremeDataProviderRef;
import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;
import com.mapinfo.util.*;
import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;
import com.mapinfo.mapj.Layer;
import com.mapinfo.dp.jdbc.oraso.OraSoDataProviderHelper;
import com.mapinfo.dp.jdbc.oraso.OraSoTableDescHelper;
import com.mapinfo.dp.jdbc.*;
import com.mapinfo.graphics.RenditionImpl;
import com.mapinfo.graphics.Rendition;
import com.mapinfo.theme.ThemeList;
import java.awt.Color;
import com.mapinfo.coordsys.CoordSys;
import java.awt.SystemColor;


//Sample Application demonstrating the difference in
//rendering with the CompositeRenderer and the
//MapXtremeImageRenderer

public class CompositeRenderApplet
    extends JApplet {

  public Image m_mapImage = null;
  public MapJ m_mapJ = null;
  public JButton compButton = new JButton("Composite");
  public JButton mxtjButton = new JButton("MapXtreme");

//URL path to MDF
//here a separate context is used
  public String m_fileToLoad =
      "http://localhost:8080/mapxtreme45/data/local/world.mdf";
      //"C:\\Program Files\\MapInfo\\MapXtreme-4.5.0\\examples\\server\\data\\world.gst";

//URL path to MXTJ Servlet
  public String m_mxtjURL =
      "http://127.0.0.1:8080/mapxtreme45/servlet/mapxtreme";
  ;

  public void init() {
    try {
      // This line prevents the "Swing: checked access to system event queue" message seen in some browsers.
      getRootPane().putClientProperty("defeatSystemEventQueueCheck",
                                      Boolean.TRUE);

/*
      InputStream isRemoteFile = null;
      m_mapJ = new MapJ();
      //get a remote connection to MDF
      URL u = new URL(m_fileToLoad);
      URLConnection conn = u.openConnection();
      isRemoteFile = conn.getInputStream();

      // Load the map
      System.out.println("load the map");
      m_mapJ.loadMapDefinition(isRemoteFile);
*/
//*****************************************************************************

m_mapJ = new MapJ();
System.out.println("load file map");
//myMap.loadMapDefinition("C:\\Program Files\\MapInfo\\MapXtreme-4.5.0\\examples\\server\\data\\local\\world.mdf");
//m_mapJ.loadGeoset("C:\\Program Files\\MapInfo\\MapXtreme-4.5.0\\examples\\server\\data\\world.gst",
//  "C:\\Program Files\\MapInfo\\MapXtreme-4.5.0\\examples\\server\\data\\", null);

//m_mapJ.loadGeoset("E:\\无锡地图\\wuxi.gst", "E:\\无锡地图\\", null);
// url to MapXtreme servlet to remotely connect to map engine
String mapXtremeURL =
    //"http://localhost:8080/mapdemo/servlet/Mapservice";
    //"http://localhost:8080/mapxtreme45/servlet/mapxtreme";
    "http://localhost:8080/mapxtreme45/mapxtreme";

OraSoDataProviderHelper oraSoDPHelper =
    new OraSoDataProviderHelper("tova-0028", 1521, "phosphor", "undemo",
                                "tova", DriverType.thin,
                                "oracle.jdbc.driver.OracleDriver");

String sql = "SELECT * FROM diangan";
String[] idColumn = {""};
System.out.println(sql);

// The Constructor required when using a Query
System.out.println("new OraSoTableDescHelper");
OraSoTableDescHelper oraSoTDHelper =new OraSoTableDescHelper(sql,
    idColumn, // java.lang.String[] idColumns,
    "GEOLOC", // java.lang.String spatialColumn,
    null, // java.lang.String renditionColumn,
    com.mapinfo.dp.RenditionType.none, // RenditionType renditionType,
    null, // java.lang.String labelRenditionColumn,
    com.mapinfo.dp.RenditionType.none, // RenditionType labelRenditionType,
    CoordSys.longLatNAD27, // CoordSys coordSys,
    2 //int dimension
    );
System.out.println("new MapXtremeDataProviderRef");
//The Remote Dataprovider to access the Data
MapXtremeDataProviderRef mxtDPRef = new MapXtremeDataProviderRef(
    oraSoDPHelper, mapXtremeURL);

Layer myLayer = null;

//assign Oracle info to MapJ layer
System.out.println("assign Oracle info to MapJ layer");
myLayer = (Layer) m_mapJ.getLayers().add(mxtDPRef, oraSoTDHelper, "OraSoLayer");
  //31.5, 120.3.
  m_mapJ.setBounds(new DoubleRect(120.2,31.5,120.4,32));

//*****************************************************************************

      //inner member class to draw the Map
      MapComponent map = new MapComponent();
      map.setBackground(java.awt.Color.blue);

      //this button will render with the CompositeRenderer
      compButton.addActionListener(
          new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          try {
            updateOverrideTheme();
            renderMapComposite();
          }
          catch (Exception ex) {
            System.out.println("Exception in button ");
            ex.printStackTrace();
          }

        }
      }
      );

      //this button will render with the MapXtremeImageRenderer
      mxtjButton.addActionListener(
          new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          try {
            updateOverrideTheme();
            renderMapMXTJ();
          }
          catch (Exception ex) {
            System.out.println("Exception in button ");
            ex.printStackTrace();
          }

        }
      }
      );
      //render the initial Map
      renderMapMXTJ();
      //build the GUI
      BorderLayout bl = new BorderLayout();
      getContentPane().setLayout(bl);
      getContentPane().add(compButton, bl.NORTH);
      getContentPane().add(mxtjButton, bl.SOUTH);
      getContentPane().add(map, bl.CENTER);

    } //end try
    catch (Exception e) {
      System.out.println("Exception in init ");
      e.printStackTrace();
    } // end catch

  } // end of Init

//render the Map using the Composite Renderer
//Hardcoded to only repaint the 0th layer
  public void renderMapComposite() {
    try {
// Create the ImageRequestComposer
      ImageRequestComposer imageRC = ImageRequestComposer.create(m_mapJ,
          ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.blue, "image/gif");
      /*
       Create the composite renderer
       Render the image
       Stream the image back to the client
       */

      CompositeRenderer renderer = new CompositeRenderer(m_mxtjURL, 0);
      renderer.render(imageRC);
      m_mapImage = renderer.toImage();
      renderer.setRedrawBottom(false);
      repaint();
    }
    catch (Exception ex) {
      System.out.println("Exception in renderMapComposite ");
      ex.printStackTrace();
    }

  }

//render the Map using the MapXtremeImageRenderer
  public void renderMapMXTJ() {
    try {
// Create the ImageRequestComposer
      ImageRequestComposer imageRC = ImageRequestComposer.create(m_mapJ,
          ImageRequestComposer.MAX_COLORS_TRUECOLOR, Color.blue, "image/gif");
      /*
       Create the MapXtreme renderer
       Render the image
       Stream the image back to the client
       */

      MapXtremeImageRenderer renderer = new MapXtremeImageRenderer(m_mxtjURL);

      renderer.render(imageRC);
      m_mapImage = renderer.toImage();
      repaint();
    }
    catch (Exception ex) {
      System.out.println("Exception in renderMapMXTJ ");
      ex.printStackTrace();
    }

  }

//Create an OverrideTheme on the 0th layer
//sets the points foreground color to a random color
  public void updateOverrideTheme() {
    Layer l = m_mapJ.getLayers().elementAt(0);
    ThemeList tl = l.getThemeList();
    tl.removeAll();
    Rendition rend = RenditionImpl.getDefaultRendition();
    rend.setValue(rend.SYMBOL_FOREGROUND,
                  new Color( (int) (Math.random() * 255),
                            (int) (Math.random() * 255),
                            (int) (Math.random() * 255)));
    OverrideTheme myOTheme = new OverrideTheme(rend, "My Theme");
    l.getThemeList().add(myOTheme);
  }

//inner class that paints the map image to a JComponent
  public class MapComponent
      extends JComponent {
    public void paint(Graphics g) {
      if (m_mapImage != null) {
        g.drawImage(m_mapImage, 0, 0, this);
      }
      else {
        System.out.println("paint: Image null ");
      }
    }
  }

  public CompositeRenderApplet() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    this.getContentPane().setBackground(SystemColor.control);
    this.setFont(new java.awt.Font("Dialog", 0, 11));
    this.setForeground(Color.black);

  }


}

⌨️ 快捷键说明

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