📄 mapperservlet.java
字号:
System.out.println("tool=" + tool);
}
// Tool used, so transform map accordingly
if (tool != NO_TOOL)
{
System.out.println(tool);
// Get the previous center point locations
//测量距离
switch (tool){
case RULER_TOOL:
System.out.println(RULER_TOOL);
if (iLineCount == 0) {
xStrTemp = new Double(req.getParameter("ptx"));
yStrTemp = new Double(req.getParameter("pty"));
//System.out.println(xStrTemp+" "+yStrTemp);
iLineCount++;
//System.out.println("");
System.out.println("the first distance parameter: "+yStrTemp);
}
else
{
System.out.println("begin measure the distance");
xStr = new Double(req.getParameter("ptx"));
yStr = new Double(req.getParameter("pty"));
DoublePoint screenpoint1 = new DoublePoint(xStrTemp.doubleValue(),
yStrTemp.doubleValue());
DoublePoint screenpoint2 = new DoublePoint(xStr.doubleValue(),
yStr.doubleValue());
//System.out.println("xtemp" + xStrTemp.doubleValue()
// +"ytemp" + yStrTemp.doubleValue());
//System.out.println("x" + xStr.doubleValue()
// +"y" + yStr.doubleValue());
System.out.println("xscreenpoint1" + screenpoint1.x
+"yscreenpoint1" + screenpoint1.y);
System.out.println("xscreenpoint2" + screenpoint2.x
+"yscreenpoint2" + screenpoint2.y);
// screenpoint1.x =1197.0 ;
//screenpoint1.y = 1101.0;
// screenpoint2.x =2564.0 ;
// screenpoint2.y = 2295.0;
//xscreenpoint1197.0yscreenpoint1101.0
//xscreenpoint2564.0yscreenpoint2295.0
/////////////////////////////////////////////////////////////////////////////////////////
newpoint1 = myMap.transformScreenToNumeric(screenpoint1);
newpoint2 = myMap.transformScreenToNumeric(screenpoint2);
////////////////////////////////////////////////////////////////////////////////////////
xStrTemp = xStr;
yStrTemp = yStr;
iLineCount++;
System.out.println(iLineCount);
//myMap.setCenter(screenpoint2);
double Distance = myMap.cartesianDistance(newpoint1, newpoint2);
//iDistance =(int)Distance;
//System.out.println("x1="+newpoint1.x+ "y1="+newpoint1.y);
//System.out.println("x2="+newpoint2.x+ "y2="+newpoint2.y);
//System.out.println("no"+Distance);
iDistance = LinearUnit.mile.convert(Distance,
myMap.getDistanceUnits());
//iDistance=(int)iDistance;
//iDistance += iDistance;
System.out.println("yes"+iDistance);
}
// iLineCount = 0;
break;
case CENTER_TOOL:
double m_x = Double.valueOf(req.getParameter("m_x")).doubleValue();
double m_y = Double.valueOf(req.getParameter("m_y")).doubleValue();
DoublePoint m_dPoinCenter = new DoublePoint(m_x, m_y);
myMap.setCenter(m_dPoinCenter);
break;
case TRACE_TOOL: //轨迹回放
int m_i = Integer.valueOf(req.getParameter("m_count")).intValue();
int m_count = m_i * 2 + 2;
m_x = Double.valueOf(req.getParameter("m_x")).doubleValue();
m_y = Double.valueOf(req.getParameter("m_y")).doubleValue();
String telTrace = req.getParameter("m_tel");
DoublePoint m_dPointTrace = new DoublePoint(m_x, m_y);
//System.out.println(m_i+"x="+m_x+"y="+m_y);
m_PointArrary[0][m_i * 2] = m_x;
m_PointArrary[0][m_i * 2 + 1] = m_y;
if (m_i >= 1) {
double[][] m_PArrary = new double[1][m_count];
for (int k = 0; k < m_count; k += 2) {
m_PArrary[0][k] = m_PointArrary[0][k];
m_PArrary[0][k + 1] = m_PointArrary[0][k + 1];
//System.out.println(m_PArrary[0][k]+"****"+m_PArrary[0][k+1]);
}
DoubleRect m_dRect = new DoubleRect(0, 0, 0, 0);
try {
m_dRect = myMap.getBounds();
//System.out.println("m_dRect.xmax"+m_dRect.xmax);
//System.out.println("m_dRect.xmin"+m_dRect.xmin);
//System.out.println("m_dRect.ymax"+m_dRect.ymax);
//System.out.println("m_dRect.ymin"+m_dRect.ymin);
}
catch (Exception de)
{
de.printStackTrace();
}
if (m_x > m_dRect.xmax || m_x < m_dRect.xmin || m_y > m_dRect.ymax ||
m_y < m_dRect.ymin) {
myMap.setCenter(m_dPointTrace);
}
showResultTrace(myMap, m_PArrary, telTrace);
}
else {
myMap.setCenter(m_dPointTrace);
}
break;
case INITCAR_TOOL: //初试化车辆
m_x = Double.valueOf(req.getParameter("m_x")).doubleValue();
m_y = Double.valueOf(req.getParameter("m_y")).doubleValue();
// String m_tel = convertToChinese(req.getParameter("m_tel"));
String P1=convertToChinese(req.getParameter("CarPlate_1"));
String P2=convertToChinese(req.getParameter("CarPlate_2"));
String m_tel = convertToChinese(P1+P2);
DoublePoint m_dPointInit = new DoublePoint(m_x, m_y);
System.out.println("this is what i got in sevlet m_tel: "+m_tel + "x=" + m_x + "y=" + m_y);
//showResult(MapJ mapj,DoublePoint m_dPoint,String tel)
showResult(myMap, m_dPointInit, m_tel);
break;
case Telephone_tool: /*车载电话查询*/
/*
String in_str = req.getParameter("message");
//String in_str="13693548440*D13540939 543535116 21386160208040603000000#";
//0000000000000000$GPRMC 092755.000 V 4057.3170 N 11757.6670 E 000 096 081104 *FF
System.out.println("Telephone_tool get message: "+in_str);
Vector Pos;
Pos=getPosMessage(in_str);
String i="";
String dd = "";
int j;
//经度
// i = in_str.substring(21, 27);
// j = Integer.valueOf(i).intValue() / 60;
// dd = Integer.toString(j);
// String str_y = in_str.substring(19, 21) + "." + dd;
String str_y=(String)Pos.elementAt(0);
System.out.println("I got the Pos str_y: "+str_y);
//纬度
// i = in_str.substring(30, 36);
// j = Integer.valueOf(i).intValue() / 60;
// dd = Integer.toString(j);
// String str_x = in_str.substring(27, 30) + "." + dd;
String str_x=(String)Pos.elementAt(1);
System.out.println("I got the Pos str_x: "+str_x);
//System.out.println(str_x);
//System.out.println(str_y);
Double x = null;
Double y = null;
x = new Double(str_x);
y = new Double(str_y);
DoublePoint m_dPoint = new DoublePoint(x.doubleValue(), y.doubleValue());
//m_dPoint.x= new Double(str_x).doubleValue();
//m_dPoint.y= new Double(str_y).doubleValue();
//System.out.println(m_dPoint.x);
//System.out.println(m_dPoint.y);
String tel = null;
// tel = in_str.substring(0, 11);
tel =convertToChinese(req.getParameter("CarTel"));
showResult(myMap, m_dPoint, tel);
myMap.setCenter(m_dPoint);
*/
m_x = Double.valueOf(req.getParameter("m_x")).doubleValue();
m_y = Double.valueOf(req.getParameter("m_y")).doubleValue();
String C1=convertToChinese(req.getParameter("plate1"));
String C2=convertToChinese(req.getParameter("plate2"));
m_tel = convertToChinese(C1+C2);
// m_tel = convertToChinese(req.getParameter("CarTel"));
m_dPointInit = new DoublePoint(m_x, m_y);
System.out.println("this message from gisServer m_tel: "+m_tel + "x=" + m_x + "y=" + m_y);
//showResult(MapJ mapj,DoublePoint m_dPoint,String tel)
showResult(myMap, m_dPointInit, m_tel);
myMap.setCenter(m_dPointInit);
break;
case NO_TOOL:
iLineCount=0;
iDistance=0;
case FIND_TOOL: /*查询地图*/
/*查询地图*/
//读取查询条件
String LayName = convertToChinese(req.getParameter("LayName"));
sFind = convertToChinese(req.getParameter("FindName"));
//System.out.println(LayName+":"+req.getParameter("LayName"));
//System.out.println(tool);
sFind = sFind.trim();
int LayIndex = 0;
Layers m_Layers = myMap.getLayers();
Layer m_Layer = null;
for (LayIndex = 0; LayIndex < m_Layers.size(); LayIndex++) { // Layer m_Layer = myMap.getLayers().getLayer("北京政府机关");
m_Layer = m_Layers.elementAt(LayIndex);
if (m_Layer.getName().equals(LayName)) {
break;
}
}
//System.out.println(LayIndex);
FeatureSet fset = m_Layer.searchByAttribute(new ArrayList(),
"名称",
new Attribute(sFind),
null
);
Vector columns = new Vector();
Feature ftr;
Geometry geom;
DoublePoint dblPnt = new DoublePoint(0, 0);
PointGeometry pntGeometry;
VectorGeometry vectorGeometry;
PointList pntList;
Attribute attrib;
int attribCount;
DoubleRect rect = new DoubleRect();
//rect.initBounds();
while ( (ftr = fset.getNextFeature()) != null) {
//rect.merge(feat.getGeometry().getBounds());
geom = ftr.getGeometry();
if (geom.getType() == Geometry.TYPE_POINT) {
pntGeometry = (PointGeometry) geom;
rect = pntGeometry.getBounds();
dblPnt.x = rect.xmin;
dblPnt.y = rect.ymin;
//m_dPoint =pntGeometry.getLabelPoint(null);
//System.out.println( dblPnt.x+":"+ dblPnt.y);
break;
}
else {
vectorGeometry = (VectorGeometry) geom;
dblPnt = vectorGeometry.getLabelPoint(null);
break;
}
}
myMap.setCenter(dblPnt);
showName(myMap, dblPnt, sFind);
break;
default:
//放大,缩小地图
iLineCount = 0;
iDistance = 0;
newpoint = myMap.getCenter();
if ((reqParam = req.getParameter("ptx"))!=null) {
xStr = new Double(reqParam);
}
if ((reqParam = req.getParameter("pty"))!=null) {
yStr = new Double(reqParam);
}
if (xStr != null && yStr != null)
{
// Transform GIF coordinate to real world coordinate
DoublePoint screenpoint = new DoublePoint(xStr.doubleValue(), yStr.doubleValue());
newpoint = myMap.transformScreenToNumeric(screenpoint);
}
double newZoom = myMap.getZoom();
if (tool == ZOOM_IN_TOOL) {
newZoom /= 2.0;
}
else if (tool == ZOOM_OUT_TOOL) {
newZoom *= 2.0;
}
if (m_debug) {
log("tool: " + tool + " setting zoom to: " + newZoom + " at: " + newpoint);
}
// Reset the bounding rectangle, note - Pan handled by default
myMap.setZoomAndCenter(newZoom, newpoint);
}//end of switch(tool)
// Set up the renderer for this mapJ
if (tool != RULER_TOOL) {
try {
MapXtremeImageRenderer rr = new MapXtremeImageRenderer(m_mxtURL);
rr.render(ImageRequestComposer.create(
myMap, NUM_OF_COLORS, BACKGROUND_COLOR, "image/gif"));
//Output the map
rr.toStream(res.getOutputStream());
}
catch (Exception e) {
log(e.getMessage());
throw e;
}
// Save state info for next time around
session.setAttribute("mapinfo.mapj", myMap);
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -