我使用此代码连接2个文件,希望生成json文件:
function join(){
$.when(
$.getJSON('bairro.json'),
$.getJSON('convertJson.php')
).done(function(responseGeojson, responseData) {
var data = responseData[0]
var geojsonLayer = responseGeojson[0]
console.log('==geojson==');
console.log(geojsonLayer);
var lookup = {};
data.forEach(function(item) {
if(item.cod) {
lookup[item.cod] = {
id: item.cod,
nome: item.nome,
local: item.local
}
}
})
console.log('==lookup==');
console.log(lookup);
geojsonLayer.features.forEach(function(d) {
if (lookup[d.properties.CODBAIRRO]) {
d.properties.joined = lookup[d.properties.CODBAIRRO];
}
})
console.log('==the new==');
console.log(geojsonLayer);
L.geoJSON(geojsonLayer).addTo(map);
})
}
但会出现此错误消息:
TypeError:t.addLayer不是函数
根据提供的错误,问题在于以下代码行:
L.geoJSON(geojsonLayer).addTo(地图);
我不知道如何解决此错误,以使代码正常工作。
更新
Jsons表现良好并且有效,我检查了验证器。
console.log(geojsonLayer)的部分输出;是:
{type: "FeatureCollection", features: Array(161)}
features:Array(161)
[0 … 99]
0:
geometry:
coordinates:(50)
[Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1), Array(1)]
type:"MultiPolygon"
__proto__:Object
properties:{OBJECTID: 325, Área: 1705684.49376977, NOME: "Paquetá", REGIAO_ADM: "PAQUETA", AREA_PLANE: "1", …}
type:"Feature"
__proto__:Object
1:{type: "Feature", properties: {…}, geometry: {…}}
2:{type: "Feature", properties: {…}, geometry: {…}}
3:{type: "Feature", properties: {…}, geometry: {…}}
答案 0 :(得分:0)
如果您的图层未正确解释为JSON ,则会出现此错误,例如,由于文件结构错误或geojsonLayer
变量为空,因此addTo(map)
功能无法处理它。
您可以为$.getJSON
功能添加一些错误处理:
$.getJSON("YOUR-FILE.JSON", function() {
console.log("success");
})
.success(function() { console.log("success"); })
.error(function() { console.log("error"); })
.complete(function() { console.log("complete"); })
.fail(function(jqXHR, status, error){
if(status == 'parseerror'){
console.log("not valid json");
} else {
console.log("some other error?");
}
});
您的JSON如何在此处理程序上运行?
您的代码组合了来自不同来源的两个文件,因此输出文件结构可能不正确,因为JSON或您的某个文件具有错误的结构,无法解释为JSON / geoJSON。你可以将输出发布到一些JSON验证器吗?它有效吗?
您可以上传console.log(geojsonLayer);
的输出吗?
您可以选中使用此脚本单独添加这些文件 - 它们是否可以正确地添加到您的地图中?
我还强烈建议您在PHP脚本中处理服务器上的文件,该脚本将输出一个结构合理的JSON文件。