📄 mapjpool.java
字号:
package com.bro.map.pool;
/**
* <p>Title: MapJPool</p>
* <p>Description: MapJ对象池,预先创建MapJ对象,提高效率</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: BRO</p>
* @author 陈顺华
* @version 1.0
*/
import java.util.Vector;
import com.mapinfo.mapj.MapJ;
import com.mapinfo.util.DoubleRect;
public class MapJPool
{
private int m_MapJPoolSize; //对象池大小
private String m_fileToLoad;
private String m_mapPath;
private Vector m_pool; //存放MapJ
/*构造*/
public MapJPool(int size , String mdfFileStr)
{
this.m_MapJPoolSize = size;
this.m_fileToLoad = mdfFileStr;
createPool();
}
public MapJPool(int size , String gstFileStr , String mapPath)
{
this.m_MapJPoolSize = size;
this.m_fileToLoad = gstFileStr;
this.m_mapPath = mapPath;
createPool();
}
/*初始化Map池*/
private void createPool()
{
m_pool = new Vector();
//填充Map池
try
{
fillPool(this.m_MapJPoolSize);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/*填充*/
private synchronized void fillPool(int size) throws Exception
{
while (m_pool.size() < size)
{
MapJ tempmap = new MapJ();
tempmap = initMapJ();
m_pool.addElement(tempmap);
tempmap = null;
}
}
/*取MapJ*/
public synchronized MapJ getMapJ() throws Exception
{
MapJ tempmap = null;
if (m_pool.size() > 0)
{
tempmap = (MapJ)m_pool.elementAt(0);
m_pool.removeElement(tempmap);
}
else
tempmap = initMapJ();
return tempmap;
}
/*定时扫描*/
public synchronized void poolTimerEvent()
{
if (m_pool != null)
{
try
{
fillPool(this.m_MapJPoolSize);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
createPool();
}
/*释放*/
public void destroy()
{
try
{
//清除m_pool
if (m_pool != null)
{
for (int i = 0 ; i < m_pool.size() ; i++ )
{
close(m_pool.elementAt(i));
}
m_pool = null;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private void close(Object obj)
{
if (obj != null)
{
obj = null;
}
}
/*创建一个MapJ对象,加载数据*/
private MapJ initMapJ()
{
MapJ myMap = new MapJ();
try
{
if(m_fileToLoad.endsWith(".gst") || m_fileToLoad.endsWith(".GST")) //载入GST文件
myMap.loadGeoset(m_fileToLoad , m_mapPath , null);
else //载入MDF文件
myMap.loadMapDefinition(m_fileToLoad);
}
catch(Exception e)
{
System.out.println("无法加载文件:" + m_fileToLoad);
}
return myMap;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -