⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createmap.java

📁 CreateMyFirstMap
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
 }


}
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 + -