最近一段时间在研究cesium,cesium如何加载geoserver数据成为了我的难题。cesium可以加载geoserver的geojson数据( Cesium.GeoJsonDataSource.load() )。
起初的时候通过openlayer查询数据,然后在Cesium地图上进行点位的展示。对于cesium调用geoserver查询数据不知
如何下手。经过好长时间的学习,无意间从其他人的博客中翻到geoserver的cql_filter过滤字段,于是知道可以通过ajax调用geoserver数据进行模糊查询。废话不多说了,上代码。
var tuceng= ["jianzhu","shitang","sushe"];//图层名字
//We_MAP 工作区名称
$.ajax({
type:'post',
url:'http://172.x.x.x:8060/geoserver/We_MAP/ows?service=WFS&versio
n=1.0.0&request=GetFeature&typeName=We_MAP%3A'+tuceng+'&outputFormat=app
lication%2Fjson',
data:{ "cql_filter":"name like '%"+keyword+"%'" },
//name+like+%27%25餐厅%25%27 name like '%餐厅%'
async:false,
success:function(data){
if(data.features.length>0){
page(data.features.length, data.features);//数据分页
}
}
});
以上代码就可以实现Cesium加载Geoserver 的数据了。
在geoserver的浏览器端查询
http://172.x.x.x:8060/geoserver/We_MAP/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=We_MAP%3Ashitang
&maxFeatures=50&outputFormat=application%2Fjson&cql_filter=name+like+%27%25%E9%A4%90%E5%8E%85%25%27
上面的对中文文字进行转义了,下面的是没有转义的
http://172.x.x.x:8060/geoserver/We_MAP/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=We_MAP%3Ashitang
&maxFeatures=50&outputFormat=application%2Fjson&cql_filter=name+like+%27%25餐厅%25%27
下面的截图是在浏览器中的截图
name后面的+是转义字符一定要有。