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

📄 pointselectmapjaction.java

📁 mapxteme java 点要素编辑。具体涉及mapj api。仅以此为参考。
💻 JAVA
字号:
/**
 ************************************************  
 * 作者:李健   ==2009-3-27-下午01:45:27                              <br>
 * 项目:山东农行webgis项目                    <br>
 * 类名称:                                  <br>       
 * 功能:                                     <br>
 * 思路备注:                                 <br>
 ************************************************
 */
package com.nway.aftmap.gis.action;

import java.util.ArrayList;

import java.util.List;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import com.mapinfo.dp.Feature;
import com.mapinfo.dp.FeatureSet;
import com.mapinfo.dp.Geometry;
import com.mapinfo.mapj.FeatureLayer;
import com.mapinfo.mapj.Layers;
import com.mapinfo.mapj.MapJ;

import com.mapinfo.util.DoublePoint;
import com.nway.aftmap.core.ILayer;
import com.nway.aftmap.gis.IMapJBuilder;
import com.nway.aftmap.gis.MapConstants;
import com.nway.aftmap.gis.MapOperators;
import com.nway.aftmap.gis.servlets.IServletParameters;

/**
 ************************************************* 
 *@author 李健 2009-3-27-下午01:45:27<br>
 *         功能: <br>
 *         备注:
 ************************************************* 
 */
public class PointSelectMapJAction extends AbstractMapJAction {

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.nway.aftmap.gis.action.AbstractMapJAction#changeMapJ(com.mapinfo.
	 * mapj.MapJ, javax.servlet.http.HttpServletRequest)
	 */
	@Override
	public void changeMapJ(MapJ mapj, HttpServletRequest request)
			throws Exception {
		HttpSession mapSession = request.getSession();
		IMapJBuilder mapJBuilder = (IMapJBuilder) mapSession
				.getAttribute(IServletParameters.SAN_MAPJBUILDERID);
		String fx = request.getParameter(IServletParameters.PN_MAPIMAGECLICKX);
		String fy = request.getParameter(IServletParameters.PN_MAPIMAGECLICKY);
		Geometry[] geometrys = (Geometry[]) mapSession
				.getAttribute(IServletParameters.SAN_BOUNDGEOMETRYS);
		DoublePoint point = new DoublePoint(Double.valueOf(fx), Double
				.valueOf(fy));
		point = mapJBuilder.getMapJ().transformScreenToNumeric(point);
		if (isContainInGeometrys(point, geometrys)) {
			Feature[] feas = huntAtPointAndHighLight(mapJBuilder, point);
			mapSession
					.removeAttribute(IServletParameters.SAN_POINTSELECTEDFEATURES);
			mapSession.setAttribute(
					IServletParameters.SAN_POINTSELECTEDFEATURES, feas);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.nway.aftmap.gis.action.AbstractMapJAction#processMapSession(com.mapinfo
	 * .mapj.MapJ, javax.servlet.http.HttpServletRequest)
	 */
	@Override
	public void processMapSession(MapJ mapj, HttpServletRequest request)
			throws Exception {
		HttpSession mapSession = request.getSession();
		// mapSession.setAttribute(IServletParameters.SAN_MAPJID, mapj);
		mapSession.setAttribute(IServletParameters.SAN_MAPOPERATORID,
				MapJActionManager.MAPJACTIONID_POINTSELECT);
		// mapSession.setAttribute(IServletParameters.SAN_POINTSELECTEDFEATURES,
		// null);

	}

	private Feature[] huntAtPointAndHighLight(IMapJBuilder mapJBuilder,
			DoublePoint point) {
		FeatureLayer layer = null;
		MapJ mapj = mapJBuilder.getMapJ();
		Layers layers = mapj.getLayers();
		Feature[] feaArray = null;
		Feature[] outArray = null;
		// ILayer[]
		// myLayers=mapJBuilder.getMapConfig().getLayersByAdministerClass
		// (String.valueOf(mapJBuilder.getMapJBuilderClass()));
		// List<ILayer> list=createLayerList(myLayers);
		// Collections.sort(list);
		for (int i = 0; i < layers.size(); i++) {
			layer = (FeatureLayer) layers.get(i);
			if (layer.isSelectable() && layer.isEnabled()) {
				feaArray = huntLayerAtPointAndHighLight(layer, point);
				if (feaArray != null) {
					if (outArray == null) {
						outArray = feaArray;
						return outArray;
					} else {
						outArray = MapOperators.join2FeatureArray(outArray,
								feaArray);
						return outArray;
					}
				}
			}
		}
		if (outArray != null && outArray.length == 0)
			outArray = null;
		return outArray;
	}

	/**
	 * 
	 ************************************* 
	 *@param layer
	 *@param point
	 *@return 作者:李健==2009-3-28-上午10:02:03 <br>
	 *         项目:山东农行webgis项目 <br>
	 *         方法名称: huntLayerAtPointAndHighLight <br>
	 *         功能: 对一个已确认为可选、可视图层进行点选,<br>
	 *         首先去掉原有高亮,2.点选高亮,3.返回数组<br>
	 *         思路备注: <br>
	 ************************************* 
	 */
	private Feature[] huntLayerAtPointAndHighLight(FeatureLayer layer,
			DoublePoint point) {
		FeatureSet fs = null;
		Feature[] outFeas = null;
		layer.getThemeList().removeAll();
		try {
			fs = layer.searchAtPoint(MapConstants
					.creatDefaultTABXYAttributeColumns(), point, null);
			outFeas = MapOperators.convertFeatureSetToArray(fs);
			if (outFeas != null) {
				fs.dispose();
				Random rn = new Random();
				// layer.getThemeList().removeAll();
				layer.getThemeList().insert(
						MapOperators.createSelectionTheme("pointselect"
								+ rn.nextInt(), MapConstants
								.getDefaultHighlightRendition(), outFeas), 0);
			}
		} catch (Exception e) {
			outFeas = null;
		}
		return outFeas;
	}

	private List<ILayer> createLayerList(ILayer[] layers) {
		List<ILayer> list = new ArrayList<ILayer>();
		for (int i = 0; i < layers.length; i++) {
			list.add(layers[i]);
		}
		return list;
	}

}

⌨️ 快捷键说明

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