cheney
路人甲
路人甲
  • 注册日期2011-12-08
  • 发帖数2
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3581回复:2

[求助]openlayer多边形框选查询

楼主#
更多 发布于:2011-12-21 11:36
<p> 在做一个多边形框选查询,下面是写的一段代码,先画一个多边形,然后得到<font face="Verdana">geometry</font>,alert的结果是POLYGON((<font face="Verdana">87.896030117188   43.662511703125, 87.978427578125 43.382360335938,88.434360195313  43.40982615625,88.247592617188  43.640539046875,87.896030117188,43.662511703125</font>))</p>
<p>本来是想用<font face="Verdana">FILTER:geometryFilter</font>直接查询,但这样报错<font face="Verdana">WFS server error. Invalid or Unsupported FILTER in GetFeature : [object Object]</font></p>
<p> </p>
<p>后来尝试现在的写法,按弹出的POLYGON,直接把点写进去(但逗号分隔位置不一样,需要手动改一下),可以查出来。</p>
<p>请大家帮忙看看第一种写法有什么错误,如果不行,怎么把POLYGON里的内容转为第二种写法里的;或者有其他方法?</p><a href="attachment/2011-12/2011122111284664250.txt">2011-12/2011122111284664250.txt</a><br/>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2011-12-22 09:29
<p>转贴:</p><p> </p><p>openlayers提供了几十个示例,虽然每个示例都很简单,但却很具有代表性,值得初学者学习。<br/>现在我想做一个测试,包含多个图层、缩放条、工具条、鼠标位置、弹出窗口,其中图层分别来自geoservr<br/>提供的WMS和WFS服务接口。<br/>主要代码如下:<br/>样式定义,定义地图大小,工具条位置和替换按钮图片。<br/><style
type="text/css"><br/>        #map {<br/>            width:
640px;<br/>            height: 475px;<br/>            border: 1px solid
black;<br/>        }<br/><br/>        .olControlPanel div { <br/>          
display:block;<br/>          position: absolute;<br/>                    top:
0px;<br/>                    left: 190px;<br/>          width:  60px;<br/>          
height: 23px;<br/>          margin: 5px;<br/>        }<br/>        .olControlPanel
.olControlMouseDefaultsItemActive { <br/>          background-image:
url("/openlayers/img/Pan.gif");<br/>        }<br/>        .olControlPanel
.olControlMouseDefaultsItemInactive { <br/>          background-image:
url("/openlayers/img/PanSelected.gif");<br/>        }<br/>        .olControlPanel
.olControlZoomBoxItemInactive { <br/>          width:  60px;  <br/>          
height: 23px;<br/>          position: absolute;<br/>                    top:
0px;<br/>                    left: 250px;<br/>          background-image:
url("/openlayers/img/ZoomInSelected.gif");<br/>        }<br/>        
.olControlPanel .olControlZoomBoxItemActive { <br/>          width:  60px;  
<br/>          height: 23px;<br/>          position: absolute;<br/>                
    top: 0px;<br/>                    left: 250px;<br/>          background-image:
url("/openlayers/img/ZoomIn.gif");<br/>        }<br/>         .olControlPanel
.olControlSelectFeatureItemInactive { <br/>          width:  60px;  <br/>          
height: 23px;<br/>          position: absolute;<br/>                    top:
0px;<br/>                    left: 310px;<br/>          background-image:
url("/openlayers/img/InfoSelected.gif");<br/>        }<br/>        .olControlPanel
.olControlSelectFeatureItemActive { <br/>          width:  60px;  <br/>          
height: 23px;<br/>          position: absolute;<br/>                    top:
0px;<br/>                    left: 310px;<br/>          background-image:
url("/openlayers/img/Info.gif");<br/>        }<br/>    
</style><br/>JS代码,核心部分。<br/><script
src="/openlayers/OpenLayers.js"></script><br/>    <script
type="text/javascript"><br/>        <!--<br/>        //定义全局变量<br/>        var
map, layer, selectControl, selectedFeature;<br/>        //关闭弹出窗口的函数<br/>        
function onPopupClose(evt) {<br/>            
selectControl.unselect(selectedFeature);<br/>        }<br/>        
//构造弹出窗口的函数<br/>        function onFeatureSelect(feature) {<br/>            
selectedFeature = feature;<br/>            popup = new
OpenLayers.Popup.Anchored("chicken", <br/>                                    
feature.geometry.getBounds().getCenterLonLat(),<br/>                                    
new OpenLayers.Size(250,75),<br/>                                     "<div
style='font-size:.8em'>" + feature.attributes['cq:LNAME']
+"</div>",<br/>                                     null, true,
onPopupClose);<br/>            feature.popup = popup;<br/>            
map.addPopup(popup);<br/>        }<br/>        //销毁弹出窗口的函数 <br/>        function
onFeatureUnselect(feature) {<br/>            
map.removePopup(feature.popup);<br/>            
feature.popup.destroy();<br/>            feature.popup = null;<br/>        
}<br/>        //地图和页面加载函数<br/>        function init(){<br/>            
//设置地图缩放范围和缩放等级,0级比例尺最小<br/>            map = new OpenLayers.Map( $('map'), {  
maxScale: 500, minScale: 500000, numZoomLevels: 5 });<br/>            
//加载行政区图层,WMS栅格图像<br/>            layer = new OpenLayers.Layer.WMS( "District",
<br/>                    "http://192.98.151.17:8081/geoserver/wms", {layers:
'cq:GMAP_DISTRICT'} );<br/>            map.addLayer(layer);<br/>            
//加载水系图层,WMS栅格图像<br/>            layer = new OpenLayers.Layer.WMS( "Water",
<br/>                    "http://192.98.151.17:8081/geoserver/wms", {layers:
'cq:GMAP_LAKE', 'transparent': true, format: 'image/png' } );<br/>            
map.addLayer(layer);<br/>            
//加载单位图层,WFS矢量数据,由openlayers在客户端绘制,注意:数量太多会导致速度缓慢<br/>            layer = new
OpenLayers.Layer.WFS( "Unit", <br/>                    
"http://192.98.151.17:8081/geoserver/wfs", {typename: 'cq:GPOI_GOV'},
<br/>               {  <br/>                      typename: 'unit',
<br/>                      featureNS: 'http://www.openplans.org/cq',
<br/>                      extractAttributes: true, <br/>                      
maxfeatures: 10,<br/>                      textAttrToDisplay: 'lname'
<br/>               } );<br/>            map.addLayer(layer);<br/>            
//在地图上添加按钮和工具条<br/>            zb = new
OpenLayers.Control.ZoomBox();<br/>            var panel = new
OpenLayers.Control.Panel({defaultControl: zb});<br/>            selectControl =
new OpenLayers.Control.SelectFeature(layer, {onSelect: onFeatureSelect,
onUnselect: onFeatureUnselect, hover: true});<br/>            
panel.addControls([<br/>                new OpenLayers.Control.MouseDefaults(),
zb, selectControl<br/>            ]);<br/>            
map.addControl(panel);<br/>           <br/>            map.addControl(new
OpenLayers.Control.PanZoomBar({zoomWorldIcon:false}));<br/>            
map.addControl(new
OpenLayers.Control.LayerSwitcher({'ascending':false}));<br/>            
map.addControl(new OpenLayers.Control.MousePosition());<br/>            
//设置初始地图的中心坐标和缩放等级<br/>            map.setCenter(new OpenLayers.LonLat(106.5,
29.5), 3);<br/>            <br/>        }<br/>        // --><br/>    
</script><br/>HTML代码<br/><body ><br/>    
<h1>OpenLayers Test</h1><br/>    <div
id="panel"></div><br/>    <div id="map"></div><br/>    
<textarea style="display:none" id="serialize" cols="96" rows="10"/><br/>  
</body><br/><br/></p>
举报 回复(0) 喜欢(0)     评分
cheney
路人甲
路人甲
  • 注册日期2011-12-08
  • 发帖数2
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2011-12-22 11:00
这个帖子看过了,看了没有得到答案
举报 回复(0) 喜欢(0)     评分
游客

返回顶部