📄 pointselectmapjaction.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 + -