📄 createmap.java
字号:
}
}
public void TabLayer()//stuby tab data provider
{
String mapxtremeUrl="http://901-32:8083/mapxtreme47/mapxtreme";
//create the tab TabTableDescHelper
TABTableDescHelper tabTDHelper=new TABTableDescHelper("administrative3.TAB");
//create the tab TABDataProviderHelper
TABDataProviderHelper tabDPHelper=new TABDataProviderHelper("E:\\MapInfo\\studymap");
//create the remote dataproviderref neeeded to access the data
try
{
MapXtremeDataProviderRef mxtDPRef = new MapXtremeDataProviderRef(
tabDPHelper, mapxtremeUrl);
MapJ mapj=new MapJ();
//mapj.setBounds(new DoubleRect(0,0,800,600) );
DoubleRect bounds = new DoubleRect(new DoublePoint(108.9607,34.2729),0.31,0.21);
//设置该地图的中心为(108.9607,34.2729)单位为经纬度单位,0.31表示该地图的经度的最大值与最小值之差为0.31
//0.21表示该地图的纬度的最大值与最小值之差为0.21
mapj.setBounds(bounds);
LinearUnit distUnit = LinearUnit.kilometer;
//LinearUnit distUnit=LinearUnit.meter ;
mapj.setDistanceUnits(distUnit);
mapj.setZoom(42.35) ;//设置不是比例尺,设置的是视野范围,即窗口宽度。不过它很有用,
//当该值很大时显示的地图就比较小;而当该值比较小时显示的地图就比较大,到现在为止我还不知道它的原理,它合别的设置有
//没有什么关系,如地图的边界大小,如果有关系它们之间的定量关系是怎样的?为了在手机上显示地图这点必须清楚。
mapj.getLayers().addLayer(mxtDPRef,tabTDHelper,"onelayer");
MapXtremeImageRenderer render=new MapXtremeImageRenderer(mapxtremeUrl);
ImageRequestComposer imageRC=ImageRequestComposer.create(mapj,256,Color.green ,"image/png");
render.render(imageRC) ;
render.toFile("E:\\MapInfo\\study\\mapimage\\onelayer.png") ;
//test another method
}catch(Exception e)
{
System.out.println("get a "+e.getClass() +"\nwith message "+e.getMessage() ) ;
}
}
public void OraTABLayer()
{//the data source for the layer comes form rdbms:oracle
String mapxtremeUrl="http://901-32:8083/mapxtreme47/mapxtreme";
MapJ mapj=new MapJ();
//set bounds
// DoublePoint point=new DoublePoint(108.9608,34.2729);
// DoubleRect bounds=new DoubleRect(point,0.32,0.21);
// mapj.setBounds(bounds) ;
mapj.setDeviceBounds(new DoubleRect(0,0,800,600)) ;
////set distance unit
LinearUnit unit=LinearUnit.kilometer ;
mapj.setDistanceUnits(unit) ;
//
String[] idColumns={"MI_PRINX"};
OraSoTableDescHelper oraSoTDHelper=this.getOraSoTableDescHelper("POINT",idColumns);
//create orasodataproviderhelper
OraSoDataProviderHelper oraSoDPHelper=new OraSoDataProviderHelper("901-32",//host
1521,//port
"xianmap",//sid
"USERSTOREMAP2",//user
"Icando41",//password
DriverType.thin,//DriverType
"oracle.jdbc.OracleDriver");
//create mapxtremeDataProviderRef
try
{
MapXtremeDataProviderRef mxtDPRef = new MapXtremeDataProviderRef(
oraSoDPHelper, mapxtremeUrl);
mapj.getLayers() .addLayer(mxtDPRef,oraSoTDHelper,"point");
//insert another layer
oraSoTDHelper=this.getOraSoTableDescHelper("LINE",idColumns);
mxtDPRef=new MapXtremeDataProviderRef(oraSoDPHelper,mapxtremeUrl);
mapj.getLayers() .insertLayer(mxtDPRef,oraSoTDHelper,1,"line");
//insert another layer
oraSoTDHelper=this.getOraSoTableDescHelper("BLOCK",idColumns);
mxtDPRef=new MapXtremeDataProviderRef(oraSoDPHelper,mapxtremeUrl);
mapj.getLayers() .insertLayer(mxtDPRef,oraSoTDHelper,2,"block");
//学习如何得到每个图层的名字
Layers layers=mapj.getLayers() ;
AbstractLayer layer;
String layername;
for(int i=0;i<layers.size() ;i++)
{
DoubleRect dr=mapj.getBounds() ;
layer=layers.get(i) ;
layername=layer.getName() ;//the result is "onelayer"
FeatureLayer feature2=(FeatureLayer)layers.get(i) ;
LabelProperties labelProperties=feature2.getLabelProperties() ;
int priority=labelProperties.getPriority() ;//为什么每次都是0
if(layername.equals("block") )
{
layer.setZoomLayer(true) ;
layer.setMaxZoom(new Distance(30,LinearUnit.kilometer)) ;
layer.setMinZoom(new Distance(10,LinearUnit.kilometer)) ;
}
}
mapj.setCenter(new DoublePoint(108.9608,34.2729)) ;
mapj.setZoom(16);//实际上就是放大或缩小地图
//
MapXtremeImageRenderer render=new MapXtremeImageRenderer(mapxtremeUrl);
ImageRequestComposer imageRC=ImageRequestComposer.create(mapj,256,Color.white ,"image/png");
render.render(imageRC) ;
render.toFile("E:\\MapInfo\\study\\mapimage\\onelayerfromoracle_plb10.png") ;
//
//学习从所有的图层中找出一个能够盖住所有的图层的边界出来,既不大又不小。
/* Layers layers=mapj.getLayers() ;
DataLayer dLayer=(DataLayer)layers.elementAt(0) ;
DoubleRect rect=dLayer.getBounds() ;
DoubleRect allRect=new DoubleRect();
int intialvalue=0;
if(rect!=null)
{
mapj.setBounds(rect) ;
allRect=rect;//如果返回的值不为空就首先用它初始化
intialvalue=1;
}else
{
allRect.initBounds() ;//如果为空就让系统来初始化
intialvalue=1;//因为我觉得第一层已经用过了,所以后面的循环就不用从它开始了
}
for(int j=intialvalue;j<layers.size() ;j++)
{
DataLayer tempLayer=(DataLayer)layers.get(j) ;
DoubleRect tempRect=tempLayer.getBounds() ;
if(tempRect!=null)
{
allRect.merge(tempRect) ;
}
}
mapj.setBounds(allRect) ;*/
}catch(java.lang.Exception e)
{
System.out.println("get a "+e.getClass() +"\nwith message "+e.getMessage() ) ;
e.printStackTrace() ;
}
}
public OraSoTableDescHelper getOraSoTableDescHelper(String tablename,String[] idColumns)
{
OraSoTableDescHelper oraSoTDHelper=new OraSoTableDescHelper(tablename,//tablename
false,idColumns,//unique key column
"GEOLOC",//spatial column
null,//renditionColumn
RenditionType.none ,//rendition type
null,//labelRenditionType
RenditionType.none ,
CoordSys.longLatWGS84 ,//coordinate system
2,//dimension
"USERSTOREMAP2");//owner
return oraSoTDHelper;
}
public void OraTABLayerBackup()
{//the data source for the layer comes form rdbms:oracle
String mapxtremeUrl="http://901-32:8083/mapxtreme47/mapxtreme";
MapJ mapj=new MapJ();
//set bounds
DoublePoint point=new DoublePoint(108.9608,34.2729);
DoubleRect bounds=new DoubleRect(point,0.31,0.21);
mapj.setBounds(bounds) ;
//set distance unit
LinearUnit unit=LinearUnit.kilometer ;
mapj.setDistanceUnits(unit) ;
//
String[] idColumns={"MI_PRINX"};
OraSoTableDescHelper oraSoTDHelper=new OraSoTableDescHelper("POINT",//tablename
false,idColumns,//unique key column
"GEOLOC",//spatial column
null,//renditionColumn
RenditionType.none ,//rendition type
null,//labelRenditionType
RenditionType.none ,
CoordSys.longLatWGS84 ,//coordinate system
2,//dimension
"USERSTOREMAP2");//owner
//create orasodataproviderhelper
OraSoDataProviderHelper oraSoDPHelper=new OraSoDataProviderHelper("901-32",//host
1521,//port
"xianmap",//sid
"USERSTOREMAP2",//user
"Icando41",//password
DriverType.thin,//DriverType
"oracle.jdbc.OracleDriver");
//create mapxtremeDataProviderRef
try
{
MapXtremeDataProviderRef mxtDPRef = new MapXtremeDataProviderRef(
oraSoDPHelper, mapxtremeUrl);
mapj.getLayers() .addLayer(mxtDPRef,oraSoTDHelper,"point");
//
MapXtremeImageRenderer render=new MapXtremeImageRenderer(mapxtremeUrl);
ImageRequestComposer imageRC=ImageRequestComposer.create(mapj,256,Color.green ,"image/png");
render.render(imageRC) ;
render.toFile("E:\\MapInfo\\study\\mapimage\\onelayerfromoracle_point.png") ;
}catch(java.lang.Exception e)
{
System.out.println("get a "+e.getClass() +"\nwith message "+e.getMessage() ) ;
e.printStackTrace() ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -