?? pointselectmapjaction.java
字號:
/**
************************************************
* 作者:李健 ==2009-3-27-下午01:45:27 <br>
* 項(xiàng)目:山東農(nóng)行webgis項(xiàng)目 <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>
* 項(xiàng)目:山東農(nóng)行webgis項(xiàng)目 <br>
* 方法名稱: huntLayerAtPointAndHighLight <br>
* 功能: 對一個(gè)已確認(rèn)為可選、可視圖層進(jìn)行點(diǎn)選,<br>
* 首先去掉原有高亮,2.點(diǎn)選高亮,3.返回?cái)?shù)組<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;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -