使用Javascript循环将GeoServer的Leaflet GeoJSON图层添加到数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Javascript循环将GeoServer的Leaflet GeoJSON图层添加到数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2822字,纯文字阅读大概需要5分钟。
内容图文
![使用Javascript循环将GeoServer的Leaflet GeoJSON图层添加到数组](/upload/InfoBanner/zyjiaocheng/664/8a85c75811454e4c81ac1f5e5e9424ba.jpg)
我正在尝试使用循环将GeoJSON图层添加到数组,然后在地图上显示它们.
我的目标是拥有这样的变量:scenario_json [1] = layer1,scenario_json [2] = layer2,依此类推…
myURL = [
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase1&maxFeatures=400&maxFeatures=400&outputFormat=json&format_options=callback:getJson",
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase2&maxFeatures=400&outputFormat=json&format_options=callback:getJson",
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase3&maxFeatures=400&outputFormat=json&format_options=callback:getJson"
];
$.getScript('src/leaflet.js');
for(i=0;i<=myURL.length;i++){
var scenario_json = {};
scenario_json[i] = new L.GeoJSON();
function getJson(data){
console.log(data)
scenario_json[i].addData(data);
}
$.ajax({
url: myURL[i],
jsonp: false,
dataType: "json",
jsonpCallback: "getJson",
success: getJson
})
};
我在控制台中收到以下响应:
Object {readyState: 1}
VM3689:10 Object {type: "FeatureCollection", totalFeatures: 386, features: Array[386], crs: Object}
VM3689:11 Uncaught TypeError: Cannot read property 'addData' of undefinedgetJson @ VM3689:11c @ jquery.min.js:3p.fireWith @ jquery.min.js:3k @ jquery.min.js:5r @ jquery.min.js:5
VM3689:10 Object {type: "FeatureCollection", totalFeatures: 377, features: Array[377], crs: Object}
VM3689:11 Uncaught TypeError: Cannot read property 'addData' of undefined
知道为什么它不起作用吗?
谢谢
解决方法:
发生的情况是,在getJson回调的上下文中不存在case_json.
我不确定您为什么使用JSONP,因为这是发出跨域请求的旧解决方法.您不需要它,因为目前您是在本地主机/相同域中工作.您可以尝试将纯XHR与JSON一起使用,而不是JSONP.
从您的网址中删除formatOptions:
myURL = [
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase1&maxFeatures=400&maxFeatures=400&outputFormat=json",
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase2&maxFeatures=400&outputFormat=json",
"http://localhost:8080/geoserver/jonquiere_local/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=jonquiere_local:buildings_phase3&maxFeatures=400&outputFormat=json"
];
切换到$.getJSON:
for (i = 0; i <= myURL.length; i++) {
var scenario_json = {};
$.getJSON(myURL[i], function (data) {
scenario_json[i] = new L.GeoJSON(data);
}).done(function () {
console.log('$.getJSON Done!');
}).fail(function () {
console.log('$.getJSON Fail!');
});
}
这是关于Plunker的一个工作示例:http://plnkr.co/edit/fNf9CDTBCCsj3cavVjJY?p=preview
PS.如果您遇到跨域问题,可以通过在GeoServer上启用CORS来简单解决.
内容总结
以上是互联网集市为您收集整理的使用Javascript循环将GeoServer的Leaflet GeoJSON图层添加到数组全部内容,希望文章能够帮你解决使用Javascript循环将GeoServer的Leaflet GeoJSON图层添加到数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。