Javascript “扔传单”;未捕获类型错误:无法读取属性';纬度';“未定义”的定义;向地图添加新标记时
我试图循环查看Javascript “扔传单”;未捕获类型错误:无法读取属性';纬度';“未定义”的定义;向地图添加新标记时,javascript,leaflet,Javascript,Leaflet,我试图循环查看ajax调用的结果,以便在单击时为传感器创建标记。现在,我只想在单击按钮时显示标记。这是行不通的。调试后,可能是计时/并发问题,但之前类似的问题通过window.SetTimeOut()解决了。这对我不起作用。我在下面列出了这段代码和错误消息的截图: latlng对象为空的传单屏幕截图 控制台中错误的屏幕截图 function sensorLayer(response) { response.forEach(function(item) { if (item["Lat
ajax
调用的结果,以便在单击时为传感器创建标记。现在,我只想在单击按钮时显示标记。这是行不通的。调试后,可能是计时/并发问题,但之前类似的问题通过window.SetTimeOut()
解决了。这对我不起作用。我在下面列出了这段代码和错误消息的截图:
latlng对象为空的传单屏幕截图
控制台中错误的屏幕截图
function sensorLayer(response) {
response.forEach(function(item) {
if (item["Latitude"] !== null && item["Longitude"] !== null) {
window.setTimeout(() => {
var mark = new L.marker((parseFloat(item["Latitude"]), parseFloat(item["Longitude"])))
.addTo(map);
}, 100);
}
});
}
这是我的代码
function sensorLayer(response) {
response.forEach(function(item) {
if (item["Latitude"] !== null && item["Longitude"] !== null) {
window.setTimeout(() => {
var mark = new L.marker((parseFloat(item["Latitude"]), parseFloat(item["Longitude"])))
.addTo(map);
}, 100);
}
});
}
这是电话:
document.getElementById("sensorSwitch").addEventListener("click", function(){ $.ajax({
url: ' ',//I deleted this
data: {
db: ' ',
q: "SELECT MEAN(\"pm2.5 (ug/m^3)\") from airQuality where time >='2017-09-06T00:00:00Z'"
},
success: function (response){
console.log(response); });
感谢您的帮助!它不会让我添加超过2个链接,否则我会包含一个我返回的数据示例(我想过度共享并不重要)。您可能希望用坐标实例化一个
L.latLng
,或者将它们作为数组传递,而不是用普通括号将2个坐标括起来(lat,lng)
:
var-mark=L.marker(
拉丁(
parseFloat(项目[“纬度]),
parseFloat(项目[“经度”])
)
);
或:
var-mark=L.marker([
parseFloat(项目[“纬度]),
parseFloat(项目[“经度”])
]);
顺便说一句,您应该避免使用源自客户机代码的SQL查询。这是一个典型的代码注入安全漏洞。hmm,我猜您的一个标记没有latlng-如何调用该函数?你能发布你的js文件吗?所以问题是我所有的值都不是空的;如果我做标记时没有空值,标记怎么会有空latlng?这就是为什么我最初认为这是一个并发问题。我添加了调用!我想添加整个文档,但是它有400多行,我尝试了第一个选项,它完全起作用了。真不敢相信我错过了。谢谢顺便说一句,你是对的;我应该避免使用源自客户机代码的SQL查询。