在 Leaflet 中使用 addLayer 时的错误信息
Error message when use addLayer in Leaflet
我使用此代码将 2 个文件的 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(地理json图层).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: {…}}
在这种情况下,如果 您的图层未正确解释为 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。你可以 post 你的输出到一些 JSON 验证器吗?有效吗?
你能上传你的 console.log(geojsonLayer);
的输出吗?
您可以使用此脚本检查单独添加这些文件 - 它们是否单独正确添加到您的地图?
我还强烈建议您在 PHP 脚本中处理服务器上的文件,该脚本将输出一个结构正确的 JSON 文件。
我使用此代码将 2 个文件的 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(地理json图层).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: {…}}
在这种情况下,如果 您的图层未正确解释为 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。你可以 post 你的输出到一些 JSON 验证器吗?有效吗?
你能上传你的 console.log(geojsonLayer);
的输出吗?
您可以使用此脚本检查单独添加这些文件 - 它们是否单独正确添加到您的地图?
我还强烈建议您在 PHP 脚本中处理服务器上的文件,该脚本将输出一个结构正确的 JSON 文件。