我试图通过使用Leaflet和GeoServer来显示弹出窗口,但不确定为什么不起作用。我感谢任何帮助。
<script>
var map = L.map('map').setView([-36.799907, 174.708520], 11);
var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib = 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, { minZoom: 8, maxZoom: 18, attribution: osmAttrib });
map.addLayer(osm);
//L.tileLayer('http://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}', {
// maxZoom: 20,
// subdomains: ['mt0', 'mt1', 'mt2', 'mt3']
//}).addTo(map);
var mywms = L.tileLayer.wms("http://localhost:9090/geoserver/localhost/wms", {
layers: 'localhost:TEST_JSON',
format: 'image/png',
transparent: true,
version: '1.1.0'
});
mywms.addTo(map);
var owsrootUrl = 'https://localhost:9090/geoserver/ows';
var defaultParameters = {
service: 'WFS',
version: '2.0.0',
request: 'GetFeature',
typeName: 'localhost:TEST_JSON',
outputFormat: 'text/javascript',
format_options: 'callback:getJson',
SrsName: 'EPSG:2193'
};
var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);
var WFSLayer = null;
var ajax = $.ajax({
url: URL,
dataType: 'jsonp',
jsonpCallback: 'getJson',
success: function (response) {
WFSLayer = L.geoJson(response, {
style: function (feature) {
return {
stroke: false,
fillColor: 'FFFFFF',
fillOpacity: 0
};
},
onEachFeature: function (feature, layer) {
popupOptions = { maxWidth: 200 };
layer.bindPopup("Popup text,cvbcvbcvbcvb " , popupOptions);
}
}).addTo(map);
}
});
作为测试,我在浏览器中输入此网址
http://localhost:9090/geoserver/ows?service=wfs&version=2.0&request=GetFeature
得到这个错误:
<ows:ExceptionReport xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0"
xsi:schemaLocation="http://www.opengis.net/ows/1.1
http://localhost:9090/geoserver/schemas/ows/1.1.0/owsAll.xsd">
<ows:Exception exceptionCode="MissingParameterValue" locator="GetFeature">
<ows:ExceptionText>
The query should specify either typeName, featureId filter, or a stored query id
</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
有人可以帮我通过Url发送获取请求并查看GeoServer的响应吗?
答案 0 :(得分:2)
如此简单,但花了很长时间才弄明白。
我的Geoserver没有SSL,所以应该是
owsrootUrl = 'http://localhost:9090/geoserver/ows';
和EPSG:4326
var owsrootUrl = new L.GeoJSON();
owsrootUrl = 'http://localhost:9090/geoserver/ows';
var defaultParameters = {
service: 'WFS',
version: '2.0.0',
request: 'GetFeature',
typeName: 'localhost:TEST_JSON',
outputFormat: 'text/javascript',
format_options: 'callback:getJson',
SrsName: 'EPSG:4326'
};
var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);
var WFSLayer = null;
var ajax = $.ajax({
url: URL,
dataType: 'jsonp',
jsonpCallback: 'getJson',
success: function (response) {
WFSLayer = L.geoJson(response, {
style: function (feature) {
return {
stroke: false,
fillColor: 'FFFFFF',
fillOpacity: 0
};
},
onEachFeature: function (feature, layer) {
popupOptions = { maxWidth: 200 };
layer.bindPopup("Popup text, access attributes with ParcelID:"+feature.properties.parcelid+"<br> this land has "+feature.properties.lat+" numbers</br>"
, popupOptions);
}
}).addTo(map);
}
});
这篇文章非常有用:https://gis.stackexchange.com/questions/64406/getting-wfs-data-from-geoserver-into-leaflet