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

📄 mapjpool.java

📁 基于JAVA的GIS地图定义预装载模块,地图平台为MAPXTREME,可加速客户端初始化地图的时间
💻 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 + -