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

📄 mapperservlet.java

📁 实现网络GPS定位车辆的位置
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    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 + -