阅读:1508回复:1
[求助]mapxtreme如何高亮显示啊
有人知道mapxtreme里如果想要将查找到的对象高亮显示怎么办么? <BR>objMapX.SelectionStyle.RegionBackColor = 5<BR>这是vb+mapx里面的办法 拿过来不能用 <BR>或者用什么办法让它和未选中的目标有什么区别也行
|
|
1楼#
发布于:2007-11-13 15:36
<P 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 12pt">下面代码取至于完整项目代码的一个部分,但是关于查找和高亮显示部分均为直接调用MapInfo的API实现,可以参考借鉴。 <p></p></P>
<P break-all; LINE-HEIGHT: 12pt"><BR>/**<BR>* 查找layerName图层,查找mapinfo_id值为pkValue,<BR>* 操作方式 op = Locate 显示详细信息<BR>* op = Info 定位地图<BR>*/<BR>public void locateFeature(String layerName,String pkValue,String op){<BR>try{<BR>com.mimiddleware.tools.HtmlResponseTool htmlResponse=this.responseBean.getHtmlResponse();<BR>CMapToolKit toolKit = new CMapToolKit();<BR>Layer lyr=responseBean.getM_map().getLayers().getLayer(layerName);<BR>if(lyr==null){<BR>htmlResponse.out("没有"+layerName+"这个图层");<BR>htmlResponse.out.flush();<BR>return;<BR>}<BR>//删除当前地图中的所有专题地图<BR>for (int i=0 ;i<responseBean.getM_map().getLayers().size() ;i++){<BR>responseBean.getM_map().getLayers().elementAt(i).getThemeList().removeAll();<BR>} <p></p></P> <P break-all; LINE-HEIGHT: 12pt">Integer iValue = new Integer(pkValue);<BR>int iVal = iValue.intValue();<BR>//Attribute pkAtr=new Attribute(Integer.parseInt(pkValue));<BR>Attribute pkAtr=new Attribute(iVal);<BR>String stemp = null;<BR>//System.out.println("Atribute Value is " + iValue.toString());<BR>PrimaryKey[] pkAry=new PrimaryKey[1];<BR>PrimaryKey pk=new PrimaryKey(pkAtr);<BR>pkAry[0]=pk;<BR>Vector v=new Vector();<BR>//v.addElement("MapInfo_ID");<BR>TableInfo tInfo=lyr.getTableInfo();<BR>for(int j=0;j<tInfo.getColumnCount();j++){<BR>v.addElement( tInfo.getColumnName(j));<BR>}<BR>FeatureSet fs=lyr.searchByPrimaryKey(v,pkAry,null);<BR>//FeatureSet fs=lyr.searchByAttribute(v,"MapInfo_ID",pkAtr,null);<BR>Feature f=fs.getNextFeature();<BR>if(f==null){<BR>htmlResponse.out("没有找到对应的项目信息");<BR>return;<BR>}else{<BR>//定位<BR>if(op.equalsIgnoreCase("Locate")){<BR>lyr.setVisible(true);<BR>if(responseBean.getRequestBlRenMap()>-1){<BR>//定位点<BR>if(f.getGeometry().getType()==Geometry.TYPE_POINT){<BR>double newZoomValue;<BR>PointGeometry pg=(PointGeometry)f.getGeometry();<BR>double currentZoom=responseBean.getM_map().getZoom();<BR>if(lyr.isZoomLayer();;( currentZoom>lyr.getZoomMax()|| currentZoom<lyr.getZoomMin())){<BR>newZoomValue=lyr.getZoomMax()/2;<BR>responseBean.getM_map().setZoom(newZoomValue);<BR>}<BR>responseBean.getM_map().setCenter(pg.getPoint(null));<p></p></P> <P break-all; LINE-HEIGHT: 12pt">}<BR>//定位线、面<BR>if(f.getGeometry().getType()==Geometry.TYPE_LINE||f.getGeometry().getType()==Geometry.TYPE_REGION){<BR>VectorGeometry vg=(VectorGeometry)f.getGeometry();<BR>if (vg.getBounds().width()>0 ;; vg.getBounds().height() >0){<BR>responseBean.getM_map().setBounds(vg.getBounds());<BR>responseBean.getM_map().setZoom(responseBean.getM_map().getZoom()*1.1);<p></p></P> <P break-all; LINE-HEIGHT: 12pt">}<BR>}<BR>//高亮显示<p></p></P> <P break-all; LINE-HEIGHT: 12pt">SelectionTheme selTheme = new SelectionTheme("LocateFeature");<BR>Selection sel = new Selection();<BR>sel.add(f);<BR>selTheme.setSelection(sel);<BR>com.mapinfo.graphics.Rendition rend =com.mapinfo.graphics.RenditionImpl.getDefaultRendition();<BR>rend.setValue(com.mapinfo.graphics.Rendition.FILL, Color.red );<BR>rend.setValue(com.mapinfo.graphics.Rendition.SYMBOL_FOREGROUND, Color.red);<BR>rend.setValue(com.mapinfo.graphics.Rendition.FONT_FAMILY, "MapInfo Symbols");<BR>rend.setValue(com.mapinfo.graphics.Rendition.FONT_SIZE, new Float(30));<BR>rend.setValue(com.mapinfo.graphics.Rendition.STROKE, Color.blue);<BR>rend.setValue(com.mapinfo.graphics.Rendition.STROKE_WIDTH, 3);<p></p></P> <P break-all; LINE-HEIGHT: 12pt">char[] c=new char[1];<BR>c[0]=(char)36;<BR>rend.setValue(com.mapinfo.graphics.Rendition.SYMBOL_STRING, new String(c));<BR>selTheme.setRendition(rend);<BR>lyr.setSelectable(true);<BR>toolKit.removeAllTheme(responseBean.getM_map(),"LocateFeature",0);<p></p></P> <P break-all; LINE-HEIGHT: 12pt">lyr.getThemeList().add(selTheme);<p></p></P> <P break-all; LINE-HEIGHT: 12pt">responseBean.setBlRenderMap(true);<BR>responseBean.setBlRefreshOVMap(true);<p></p></P>htmlResponse.out.flush();<BR>}<BR>}<BR>if(op.equalsIgnoreCase("Info")){<BR>//输出信息<BR>printTitleApplet();<BR>for(int g=0;g<f.getAttributeCount();g++){<BR>if((tInfo.getColumnName(g).equalsIgnoreCase("name")) || (tInfo.getColumnName(g).equalsIgnoreCase("名称")) ){<BR>htmlResponse.out("<tr><td colspan=\"2\" bgcolor=\"#FEE7BC\">查询记录:<font color=red><b>"+f.getAttribute(g).getString()+"</b></font></td></tr>");<BR>break;<BR>}<BR>}<BR>for(int g=0;g<f.getAttributeCount();g++){<BR>if(tInfo.getColumnName(g).equalsIgnoreCase("MapInfo_ID")){continue;}<BR>htmlResponse.out("<tr><td bgcolor=\"#EFEFEF\">"+tInfo.getColumnName(g)+"</td>");<BR>htmlResponse.out( "<td bgcolor=\"#FFFFFF\">"+f.getAttribute(g).getString()+"</td></tr>");<BR>}<BR>printEndApplet();<BR>}<BR>}<BR>}catch(Exception ex){<BR>ex.printStackTrace();<BR>}<BR>} |
|
|