📄 compositerenderapplet.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 + -