加载地图数据
可以打开GeoSet( *.gst)或MapDefinition( *.mdf )文件加载地图数据。MapXtreme没有默认的地图数据,所以必须人工加载地图数据。
1,加载GeoSet
myMap.loadGeoset(geosetName, dataDir, servletURL);
其中:
geosetName:geoset的完整文件名(包括路径);
dataDir:geoset中引用的tab地图文件的位置;
servletURL:mapxtremeservlet的路径,如果MapJ使用LocalDataProviderRef,servletURL可以为NULL。
示例:
myMap.loadGeoset("c://mapxtreme//maps//world.gst",
"c://mapxtreme//maps",
"http://localhost:8080/mapxtreme40/servlet/mapxtreme";);
2,加载 Map Definition
可以加载保存在文件中的地图定义(*.mdf)或者数据库中的地图定义记录(record)。首先要创建MapDefContainer,有两种情况:
《1》 地图定义在文件中:
MapDefContainer mdc = new FileMapDefContainer(dir)
示例:
【一】 MapDefContainer mdc = new FileMapDefContainer("c://mapxtreme/maps")//.mdf文件所在目录 myMap.loadMapDefinition(mdc, name)//name 是mdf文件的名字 【二】 String mapPath="E://workspace//BI_change//fz.mdf";//这个 myMap.loadMapDefinition(mapPath); 《2》 地图定义在数据库中:
MapDefContainer mdc = new JDBCMapDefContainer(driver,url, user,password)
其中,driver,url,user,password都是数据库连接的参数。
下面的示例是使用Oracle Spatial MapRefContainer,地图定义保存在数据库的表中:
OraSoMapDefContainer mdc =
new OraSoMapDefContainer("oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@machinename:1521:dbSid",
"username", "password", "tableName", "Name",
"Map_Definition");
tableName:存储在数据库中的mdf表名
Name:mdf表中文件名(对应于表里的一列名)
Map_Definition:mdf表中实际存储地图数据列名
例子: 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");
然后加载地图定义:
myMap.loadMapDefinition(mapDefContainer, name) name 是 地图定义的名字,如: myMap.loadMapDefinition(mdc, "Asia");