?? createmap.java~132~
字號:
}
}
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 + -