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

📄 studylabeltheme.java

📁 CreateMyFirstMap
💻 JAVA
字号:
package secondstudy;
import com.mapinfo.mapj.MapJ;
import com.mapinfo.util.DoublePoint;
import com.mapinfo.util.DoubleRect;
import com.mapinfo.mapj.FeatureLayer;
import com.mapinfo.unit.LinearUnit;
import com.mapinfo.mapxtreme.client.MapXtremeImageRenderer;
import com.mapinfo.xmlprot.mxtj.ImageRequestComposer;
import java.awt.Color;
import java.awt.Image;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import com.mapinfo.mapj.LabelProperties;
import com.mapinfo.graphics.Rendition;
import com.mapinfo.graphics.RenditionImpl;
import com.mapinfo.unit.Distance;
import com.mapinfo.mapj.BaseLabelProperties;
import com.mapinfo.labeltheme.OverrideLabelTheme;
import com.mapinfo.labeltheme.LabelThemeList;
public class StudyLabelTheme extends JFrame
{
  private String mdfFilePath="e:\\MapInfo\\study\\mapmdf";
  private  String mdfFileName="administrative.mdf";
  private String mapxtremeURL="http://901-32:8083/mapxtreme47/mapxtreme";
  public StudyLabelTheme()
  {
  }
public void studyOverrideLabelTheme()
{
    MapJ mapj=new MapJ();

    DoublePoint centerPoint=new DoublePoint(108.9608,34.2729);
    FeatureLayer featureLayer=null;
    double width,height;
    try
    {
      mapj.setCenter(centerPoint) ;
      mapj.loadMapDefinition(mdfFilePath + "\\" + mdfFileName);
      mapj.setDeviceBounds(new DoubleRect(0,0,800,600)) ;
      LinearUnit unit=LinearUnit.kilometer ;
      mapj.setDistanceUnits(unit) ;
      //featureLayer=mapj.getLayers() .getLayer("administrative") ;
      featureLayer=(FeatureLayer)mapj.getLayers().get(0) ;
      DoubleRect rect=featureLayer.getBounds() ;
      width=rect.xmax -rect.xmin;
      height=rect.ymax -rect.ymin;
      mapj.setBounds(new DoubleRect(centerPoint,width,height)) ;
      //set label
     // LabelProperties labelProperties=featureLayer.getLabelProperties() ;
     LabelProperties labelProperties=new LabelProperties();
      labelProperties.setLabelExpression("name") ;
      Rendition rend=new RenditionImpl();
      rend.setValue(Rendition.SYMBOL_MODE ,Rendition.SymbolMode.FONT );
      rend.setValue(Rendition.FONT_FAMILY ,"仿宋体") ;
      Distance distance=new Distance(1,LinearUnit.kilometer );
      rend.setValue(Rendition.FONT_SIZE ,distance) ;
      rend.setValue(Rendition.SYMBOL_FOREGROUND ,Color.red);
      labelProperties.setRendition(rend) ;
      OverrideLabelTheme labelTheme=new OverrideLabelTheme(labelProperties,"Iloveyou");//1
      LabelThemeList labelThemeList=featureLayer.getLabelThemeList() ;//2
      labelThemeList.add(labelTheme) ;//3
      //除了用1,2,3这三条语句实现外,还可以用4,5这两条语句实现,有一个相同的特点就是:如果这个变量的初始值的
      //获得是通过featureLayer.getXXX方法,那么就不用再用featureLayer.setXXX方法使其生效了,;如果变量的初始值
      //是用new方法得到的,那么要想使标签的设置生效就必须还用相关的featureLayer.setXXX方法
     // BaseLabelProperties baseLabel=new BaseLabelProperties(labelProperties);//4
     // featureLayer.setLabelProperties(baseLabel) ;//5
      featureLayer.setAutoLabel(true) ;
      //display
      MapXtremeImageRenderer render=new MapXtremeImageRenderer(mapxtremeURL);
     ImageRequestComposer imageRC=ImageRequestComposer.create(mapj,256,Color.white,"image/png") ;
     render.render(imageRC) ;
    // render.toFile("E:\\MapInfo\\study\\png\\overridelabeltheme.png") ;
    Image image=render.toImage() ;
    DrawImage drawImage=new DrawImage(image);
    drawImage.repaint() ;
    this.getContentPane() .add(drawImage,BorderLayout.CENTER );
    this.setSize(800,600) ;
    this.setVisible(true) ;
    this.show() ;
    }catch(java.io.IOException ioe)
    {
      System.out.println("get a "+ioe.getClass() +"\nwith message "+ioe.getMessage() ) ;
    }catch(Exception e)
    {
      System.out.println("get a "+e.getClass() +"\nwith message "+e.getMessage() ) ;
    }
}
  public static void main(String[] args)
  {
    StudyLabelTheme slt=new StudyLabelTheme();
    slt.studyOverrideLabelTheme() ;
  }
  public class DrawImage extends JPanel
{
  private Image m_img;
  public DrawImage(Image img)
  {
    m_img=img;
  }
public void paint(Graphics g)
  {
    g.drawImage(m_img,0,0,this);
  }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -