不知道我这种使用自定义符号的方法正不正确,有没有什么缺点,有什么更好的方法,请有过这方面经验的高手指点一下,在xtreme for java 中使用自定义符号的问题已经困扰我好久了。
如果在代码中进行符号的控制会更灵活一些,用代码在程序初始化是添加图层,同时设置图层中图元的显示样式。如下例子动态添加一张ORACLE中保存的空间图层,并设定图上图元显示样式。
//Add by James ,2003/6/17 ,add point to Oracle Layer
public void DrawPointsEx(MapJ map, DoublePoint point, String LayerName)
{
try
{
Layer oraLayer = map.getLayers().getLayer(LayerName);
if(oraLayer == null)
{
String mapXtremeURL = "http://liuyi:5050/mapxtreme40/servlet/mapxtreme";
java.util.Properties connectionProps = new java.util.Properties();
OraSoDataProviderHelper oraDPH = new OraSoDataProviderHelper("liuyi", 1521,"oracle8i","demo","demo",DriverType.thick);
//OraSoDataProviderHelper oraDPH = new OraSoDataProviderHelper("jdbc:mipool:map",null,null);
String[] idColumn = {"MI_PRINX"};
OraSoTableDescHelper oraSoTDHelper = new OraSoTableDescHelper(LayerName,false,idColumn,"GEOLOC","MI_SYMBOLOGY",com.mapinfo.dp.RenditionType.mapbasic ,null,com.mapinfo.dp.RenditionType.none,null,2,"DEMO");
MapXtremeDataProviderRef mxtDPRef = new MapXtremeDataProviderRef(oraDPH, mapXtremeURL);
//map.getLayers().add(mxtDPRef, oraDPH, "OraSoLayer");
oraLayer = map.getLayers().insert(mxtDPRef, oraSoTDHelper,0, LayerName);
}
Feature retFeature = CreatePointFeature(map, point,LayerName);
PrimaryKey primarykey = oraLayer.addFeature(retFeature);
Rendition rend = new RenditionImpl();
AffineTransform transform = new AffineTransform();
transform.rotate(StrictMath.toRadians(0));
rend.setValue(com.mapinfo.graphics.Rendition.SYMBOL_MODE, com.mapinfo.graphics.Rendition.SymbolMode.IMAGE);
rend.setValue(com.mapinfo.graphics.Rendition.SYMBOL_URL, GetImageURL());
rend.setValue(com.mapinfo.graphics.Rendition.SYMBOL_TRANSFORM, transform);
AddOverrideTheme(map,LayerName,rend);
}
catch(Exception exception) { }
}
//add by James 2003/6/17,use gif picture to override the layer symbol
public void AddOverrideTheme(MapJ map,String LayerName,Rendition rend)
{
Layer olayer = map.getLayers().getLayer(LayerName);
if (olayer!= null ){
OverrideTheme ovrt = new OverrideTheme(rend,"override theme");
olayer.getThemeList().add(ovrt) ;
}
}