哇,好久没有更博了,项目上临时接了个北京奥体中心的管线项目,折腾了好几个星期,加上清明小长假,一晃就到了4月份了。其实在此期间我也没闲着,在皮皮虾大神的帮助下,我也碰了碰react,下次,说不定可以来个react的入门指导,一定是最通俗易懂的~~~ :oops: 今天还是来点不一样的,缓冲查询,这个就很刺激了。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会为我照亮前路
——四月是你的谎言
缓冲查询有三点要素: distance
俗称缓冲距离;geometry
缓冲点;success
请求来的要素;
在执行查询前,我们应该为这次ajax请求准备条件,确定我们要查询的url、点和距离,例如:var geometry=JSON.stringify({//构造这个点,坐标传给x,y; “geometryType” : “esriGeometryPoint”, “geometries” : [{“x” : x, “y” : y}] }) var distance= $(‘.selectval’).val();//我取的是用户输入的value值 var url=window.cfg.buffer;//服务地址
之后我们就可以发出一个ajax请求了:$.ajax({ url:url, type : “post”, dataType:’jsonp’, data:{ inSR : “2361”, outSR : “2361”,//这个和上面那个都是空间坐标系 geometries:geometry,//之前已经用JSON。stringify转成了字符串了 distances : distance, f : “json” }, success:onSuccess, error:function(){ $.alert(“查询失败”,null); } })
onSuccess
里面还需要发送一个ajax,这个查询是查在缓冲区范围的点要素(地名地址)
var onSuccess=function(xhr){ console.log(xhr) // 根据所返回的范围进行查询 var data={ where : “NAME like”+” ‘ % “+val+” % ‘ “,//SQL语句 f:”json”, outFields:”*”,//所有字段 geometry:JSON.stringify(xhr.geometries[0]),//在缓冲区查询 geometryType:’esriGeometryPolygon’ } if(data.features.length==0){ $.alert(“没有查询到数据,请修改查询范围或内容”,null);return false;} // 将查询出的范围转换成ol格式,不然arcgis的服务是不能在openlayers上用的。 var olgeometrys = geometryArcToOl(xhr.geometries[0], “esriGeometryPolygon”); //高亮图层,其实就是在一个vector图层上添加要素。这里我把它封装成了一个函数。 kqMap.drawGeometryToDefineLayer(vectorLayer,olgeometrys,true); xhr.geometries[0].geometryType = ‘esriGeometryPolygon’; }
效果图请到博客园观看,传奇上帝博客园