【发布时间】:2016-06-11 09:27:18
【问题描述】:
我正在编写一个 Angular 应用程序,并且必须确定一个图层是否可以作为 GPX 或 KML(地理数据 XML 文件)加载。然后我返回成功加载的图层。但是,当我在 .on(ready) 事件(成功事件)中时,我无法终生弄清楚如何将变量设置为 true。这是我的代码:
(function() {
'use strict';
angular
.module('TractNotes')
.factory('xmldataService', xmldataService);
xmldataService.$inject = [];
/* @ngInject */
function xmldataService() {
var isKML = false;
var isGPX = false;
var service = {
getxmldata: getxmldata
};
return service;
////////////////
function getxmldata(layer) {
var kml = omnivore.gpx('this will fail')
.on('ready', function() {
isKML = true;
})
.on('error', function() {
console.log("This is not a KML layer.")
})
var gpx = omnivore.gpx(layer)
.on('ready', function() {
isGPX = true;
})
.on('error', function() {
console.log("This is not a GPX layer.")
});
if(isKML){
return kml;
}
else if(isGPX){
return gpx;
}
else{
return 'invalid file';
}
// @TODO: use desc xml tag as layer name
}
}
})();
当代码运行时,console.logs 可以正常工作,但它永远不会返回任何内容,因为布尔值从未正确设置。任何理解这一点的帮助表示赞赏。
【问题讨论】:
标签: javascript angularjs kml mapbox gpx