创建Map步骤:
⑴ 创建 MapJ 对象
⑵ 加载地图数据
⑶ 设置地图尺寸
⑷ 生成图片
以下分别描述:
⑴ 初始化地图对象
myMap = new MapJ();
⑵ 加载地图数据
可以打开GeoSet( *.gst)或MapDefinition( *.mdf )文件加载地图数据。MapXtreme没有默认的地图数据,所以必须人工加载地图数据。
加载GeoSet
loadGeoset(String fileName,
String dataDir,
String servletURL);
其中:
fileName:geoset的完整文件名(包括路径);
dataDir:geoset中引用的tab地图文件的位置;
servletURL:mapxtremeservlet的路径,如果MapJ使用LocalDataProviderRef,
servletURL可以为NULL。
loadGeoset(InputStream in,
String dataDir,
String servletURL);
其中:
in: geoset源数据流;
dataDir: geoset中引用的tab地图文件的位置;
servletURL: mapxtremeservlet的路径,如果MapJ使用LocalDataProviderRef,
servletURL可以为NULL。
示例:
myMap.loadGeoset("C://Program Files//MapInfo//GeoSet//xian.gst",
" C://Program Files//MapInfo //maps//xian",
http://localhost:8090/ mapxtreme45/servlet/mapxtreme );
mapURL = "http://219.245.117.110:8090/maps/xian.gst";
URL myURL = new URL(mapURL);
URLConnection myConnection = myURL.openConnection();
myInputStream = myConnection.getInputStream();
myMap.loadGeoset(myInputStream,
"C://Program Files//MapInfo //maps//xian",
"http://219.245.117.110:8090/mapxtreme45/servlet/mapxtreme");
加载 Map Definition
可以加载保存在文件中的地图定义(*.mdf)或者数据库中的地图定义记录(record)。首先要创建MapDefContainer,。
地图定义在文件中(同样也分本地数据和远程数据)
MapDefContainer mdc = new FileMapDefContainer(dir)
其中:
dir:地图定义文件路径
打开本地MapDefinition( *.mdf )文件
loadMapDefinition(MapDefContainer container,
String mapName);
其中:
container:地图定义文件容器
mapName: 地图定义文件名
打开远程MapDefinition( *.mdf )文件
loadMapDefinition(InputStream in);
其中:
in:地图文件数据流
注:本地地图定义文件也可以采用这种方式。
示例:
打开本地MapDefinition( *.mdf )文件
MapDefContainer mdc =
new FileMapDefContainer("C://Program Files//MapInfo//mdf ");
myMap. loadMapDefinition(mdc, "xian");
打开远程MapDefinition( *.mdf )文件
mapURL = "http://219.245.117.110:8090/maps/xian.mdf";
URL myURL = new URL(mapURL);
URLConnection myConnection = myURL.openConnection();
myInputStream = myConnection.getInputStream();
myMap. loadMapDefinition(myInputStream);
地图定义在Oracle数据库中
MapDefContainer mdc = new OraSoMapDefContainer(String driver,
String url,
String user,
String password,
String table,
String nameCol,
String mapDefCol)
其中driver,url,user,password都是连接数据库参数
table:存储在数据库中的mdf表名
nameCol:mdf表中文件名(对应于表里的一列名)
mapDefCol:mdf表中实际存储地图数据列名
下面的示例是使用Oracle Spatial MapRefContainer,地图定义保存在数据库的表中:
OraSoMapDefContainer mdc =
new OraSoMapDefContainer("oracle.jdbc.driver.OracleDriver",
"jdbc:oracle:thin:@ 219.245.117.110:1521:myoracle",
"mapinfo", "mapinfo", "clob_content",
"file_name","clob_column");
myMap.loadMapDefinition(mdc, "xian");
⑶ 设置图象尺寸
输出地图图像前需要设置地图尺寸,设置方法:MapJ.setDeviceBounds().,单位是象素。
示例:
myMap.setDeviceBounds(new DoubleRect(0, 0, 800, 600));
⑷ 生成图片
生成图片需要一下几步:
第一步 指定MapXtremeServlet
String mapxtremeServletUrl =
"http://219.245.117.110:8090/mapxtreme45/servlet/mapxtreme";
第二步 创建ImageRequestComposer
ImageRequestComposer imageRC =ImageRequestComposer.create(myMap, 256,
Color.blue,
"image/gif");
表示图片是256色背景为蓝色的GIF图。
第三步 创建ImageRender
MapXtremeImageRenderer renderer =
new MapXtremeImageRenderer(mapxtremeServletURL);
第四步 生成图片
本系统使用MapJ直接获取地图数据并生成图片,所以使用LocalRender而不是MapXtremeImageRender。