mapxtreme for java 实现模糊查询
2015-05-06 10:43
344 查看
1.利用字符串的contains方法的,对每个图层的每个图元进行遍历,通过属性名的比较的到模糊查询的结果;
2.利用查询的相应的名字在去找到对应的图元;
===================================================================================================================================
2.利用查询的相应的名字在去找到对应的图元;
/** * 模糊查询. * @param mymap * @param selectnames * @param response */ private void fuzzyQuery(MapJ mymap, String selectnames, HttpServletResponse response) throws Exception{ List<Feature> features = new ArrayList<Feature>(); response.setCharacterEncoding("UTF-8"); response.setHeader("content-type","application/javascript"); PrintWriter out = response.getWriter(); try{ if (mymap == null) { mymap = initMapJ(); } // 以下是进行图元的查找和渲染 //获取所有的图层 Layers layers = mymap.getLayers(); //对每个图层进行搜索. Layer m_Layer = null; for(int i=0;i<layers.size();i++){ //获得layer m_Layer = layers.elementAt(i); //如果该图层用户没有显示,那么不提供给搜索. if(!m_Layer.isVisible()){ continue; } // 删除以上操作已经添加的theme列表 m_Layer.getThemeList().removeAll(true); List columnNames = new ArrayList(); Feature ftr = null; TableInfo tabInfo = m_Layer.getTableInfo(); // 获得ColumnName for (int j = 0; j < tabInfo.getColumnCount(); j++) { columnNames.add(tabInfo.getColumnName(j)); System.out.println(tabInfo.getColumnName(j) + " -- "); } // Perform a search to get the Features(records)from the layer //获得当前图层的所有图元 RewindableFeatureSet rFtrSet; rFtrSet = new RewindableFeatureSet(m_Layer.searchAll(columnNames, null)); // FeatureSet fs = m_Layer.searchAll(columnNames, // QueryParams.ALL_PARAMS); //对每个图元进行遍历 ftr = rFtrSet.getNextFeature(); while (ftr != null) { //利用contain模拟模糊搜索. if (ftr.getAttribute(0).toString().contains(selectnames)) { System.out.println(ftr.getAttribute(0).toString()+"-------------->"+selectnames); features.add(ftr); } ftr = rFtrSet.getNextFeature(); } rFtrSet.rewind(); } System.out.println(features.size()+"================================"); //获取图元的名称 List<String> list = new ArrayList<String>(); JSONArray jsonArray = new JSONArray(); for(Feature f : features){ System.out.println(f.getAttribute(0).toString()); jsonArray.add(f.getAttribute(0).toString()); } Map<String , Object> topMap = new HashMap<String, Object>(); topMap.put("result",jsonArray); JSONObject jsonObject = JSONObject.fromObject(topMap); out.write(jsonObject.toString()); }catch (Exception e){ throw new RuntimeException(e); }finally { out.flush(); out.close(); } }
===================================================================================================================================
/** * @指定查找一个图元 * @第一个参数 mymap ---Mapj * @第二个参数 layernames 图层名称 * @第三个参数 selectnames 图元名称 * @第四个参数 Response */ private void selectF(MapJ mymap, String layernames, String selectnames, HttpServletResponse res) throws Exception { if (mymap == null) { mymap = initMapJ(); } // 以下是进行图元的查找和渲染 Layer m_Layer = mymap.getLayers().getLayer(layernames); if (m_Layer == null) { System.out.println("没有[" + layernames + "]这个图层"); responseimg(mymap, res); return; } // 删除以上操作已经添加的theme列表 m_Layer.getThemeList().removeAll(true); List columnNames = new ArrayList(); Feature ftr; TableInfo tabInfo = m_Layer.getTableInfo(); // fill vector with Column names for (int i = 0; i < tabInfo.getColumnCount(); i++) { columnNames.add(tabInfo.getColumnName(i)); System.out.println(tabInfo.getColumnName(i) + " -- "); } // Perform a search to get the Features(records)from the layer RewindableFeatureSet rFtrSet; rFtrSet = new RewindableFeatureSet(m_Layer.searchAll(columnNames, null)); // FeatureSet fs = m_Layer.searchAll(columnNames, // QueryParams.ALL_PARAMS); ftr = rFtrSet.getNextFeature(); while (ftr != null) { if (ftr.getAttribute(0).toString().equals(selectnames)) { // 定位点 if (ftr.getGeometry().getType() == Geometry.TYPE_POINT) { double newZoomValue; double currentZoom = mymap.getZoom(); if (m_Layer.isZoomLayer() && (currentZoom > m_Layer.getZoomMax() || currentZoom < m_Layer .getZoomMin())) { newZoomValue = m_Layer.getZoomMax() / 2; mymap.setZoom(newZoomValue); } mymap.setCenter(ftr.getGeometry().getBounds().center()); } // 定位线、面 if (ftr.getGeometry().getType() == Geometry.TYPE_LINE || ftr.getGeometry().getType() == Geometry.TYPE_REGION) { if (ftr.getGeometry().getBounds().width() > 0 && ftr.getGeometry().getBounds().height() > 0) { mymap.setBounds(ftr.getGeometry().getBounds()); mymap.setZoom(mymap.getZoom() * 1.1); } } break; } ftr = rFtrSet.getNextFeature(); } rFtrSet.rewind(); // 高亮显示 // 创建一个 SelectionTheme SelectionTheme selTheme = new SelectionTheme("LocateFeature"); // 创建一个Selection对象并且把选择的图元加入 Selection sel = new Selection(); sel.add(ftr); // 把Selection对象加入到SelectionTheme selTheme.setSelection(sel); // 设置SelectionTheme的显示渲染的样式 Rendition rend = RenditionImpl.getDefaultRendition(); rend.setValue(Rendition.FILL, Color.red); selTheme.setRendition(rend); // 添加SelectionTheme到指定layer的theme列表中 m_Layer.getThemeList().add(selTheme); // m_Layer.getThemeList().insert(selTheme, 0); responseimg(mymap, res); }
/** * @地图渲染 */ private void responseimg(MapJ mymap, HttpServletResponse response) { ServletOutputStream sout = null; mymap.setDeviceBounds(new DoubleRect(0.0D, 0.0D, this.imgsizex, this.imgsizey)); // 设定地图的大小 response.setContentType("image/jpeg"); try { sout = response.getOutputStream(); ImageRequestComposer irc = ImageRequestComposer.create(mymap, 65535, Color.white, "image/jpeg"); // 创建输出地图的属性---显示的像素,背景颜色,地图格式 MapXtremeImageRenderer renderer = new MapXtremeImageRenderer( this.mapxtremeurl); // 加载mapxtreme的servlet renderer.render(irc); // 渲染 renderer.toStream(sout); } catch (Exception e) { e.printStackTrace(); } try { if (sout != null) sout.flush(); sout.close(); } catch (Exception localException1) { } }
相关文章推荐
- Java实现根据ou名次查询该ou下的所有用户,或者按照名称模糊查询
- Java中文键树的一种实现(附带模糊查询功能)
- JSP+Servlet+javabean+mysql实现页面多条件模糊查询
- JSP+Servlet+javabean+oracle实现页面多条件模糊查询
- 在java List中进行模糊查询的实现方法
- java中如何实现模糊分页查询
- 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)
- MongoDB模糊查询java实现样例
- java实现的连接数据库及模糊查询功能示例
- java 中 mongodb的各种操作 模糊查询 精确查询 等等
- datatables+java实现服务器端分页,排序,查询,列的显示影藏
- AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
- 动态SQL中 实现条件参数 varchar类型的参数名称 以及模糊查询实现
- 用Java实现异构数据库的高效通用分页查询功能
- mybatis 模糊查询的实现方法
- java 中 mongodb的各种操作 模糊查询 精确查询 等等
- java操作mongodb模糊查询
- Nodejs实现模糊查询
- ajax实现模糊查询完成列表信息显示
- Java - Hibernate如何实现分页查询?