向函数添加多条语句
Adding multiple statements to function
我得到的数据如下:
$.ajax({
url: 'php/get_all_attri.php',
type: 'GET',
dataType: 'JSON',
data: {
col_name: firstSel
},
success: function(data) {
var total_statement = {};
$.each(data, function(i, data) {
console.log(data.attri_1);
});
}
});
在控制台中,这将返回我的查询的可能值,如18 19 20 21等。
它们也可以是TRUE-FALSE这样的字符串。
我需要的是让这些值创建用于使用cartoDB/传单构建地图的语句。功能如下:
function goMap3() {
var layerSource = {
user_name: 'me',
type: 'cartodb',
sublayers: [{
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='" + attr_value + "'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"}
}, ]
};
cartodb.createLayer(map_object, layerSource, options)
.addTo(map_object);
}
我需要做的是,当AJAX返回不同的值时,整个部分要被多次编写。
{
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='" + attr_value + "'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"}
},
在这种情况下,attr_value
每次都需要替换为AJAX中的值。这将允许我的整个功能看起来像这样:
function goMap3() {
var layerSource = {
user_name: 'me',
type: 'cartodb',
sublayers: [{
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='17'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"}
},
{
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='18'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"}
},
{
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='19'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"}
},]
};
cartodb.createLayer(map_object, layerSource, options)
.addTo(map_object);
}
总之:我正试图弄清楚我的问题中的最后一个函数是如何结束的。我需要制作一些这样的"子层",以匹配从AJAX返回的值的数量和子层语句中正确区域中填充的值。
这些不是多个语句,它们只是数组的元素。您可以简单地在$.each()
循环中向数组添加:
function goMap3(data) {
var sublayers = [];
$.each(data, function(i, attr_value) {
sublayers.push({
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='" + attr_value + "'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker-line-color:#fff;marker-allow-overlap: true;"
});
});
var layerSource = {
user_name: 'me',
type: 'cartodb',
sublayers: sublayers
};
cartodb.createLayer(map_object, layerSource, options)
.addTo(map_object);
}
然后您可以从AJAX成功函数中调用geoMap3(data)
。
您需要为数组中的每个条目循环。只需将您的数据发送到此函数,它就会创建对象
function goMap3(data) {
var layerSource = {
user_name: 'me',
type: 'cartodb',
sublayers: []
};
//Adds a new sublayer to the layerSource object every iteration.
$.each(data, function (i, attr_value) {
layerSource.sublayers.push({
sql: "SELECT cartodb_id, the_geom_webmercator FROM mytable where attribute='" + attr_value + "'",
cartocss: "#location_fusion_table {marker-fill:#1d5492;marker-width:5;marker-line-width: 0.3;marker- line-color:#fff;marker-allow-overlap: true;"
});
});
cartodb.createLayer(map_object, layerSource, options)
.addTo(map_object);
}
相关文章:
- 如何使用 Backbone 将多条记录呈现到 html 表中.js .
- 在Javascript中为if/else语句添加OR
- 同时显示多条AngularJS路线
- 使用Javascript将多条记录插入SQLite数据库时出错
- 向函数添加多条语句
- AngularJS动态显示多条记录
- 在多条测地线折线上为符号添加动画效果
- d3 为多条SVG线添加动画效果
- 在 extjs4 中编辑时需要对齐复选框、添加多条记录并查看日期归档
- 如何向此 jQuery 语句添加更多内容
- 如何在datatablejs中用一条语句对多个表使用索引列
- 谷歌地图添加多条多段线
- 将多条记录添加到模型's系列帆船
- 如何通过axform将多条记录添加到select2表单中
- 在一条语句中获取多个未定义对象中的初始化对象
- 向本地存储中添加多条记录
- 如果不工作,则多条语句else
- 分析后台作业添加多条记录导致错误
- Node Js的MongoDB添加了多条数据线
- 向 else if 语句添加多个参数