我有以下代码:
$("#map4").gMap({ markers: [
{ address: "Tettnang, Germany",
html: "The place I live" },
{ address: "Langenargen, Germany",
html: "_address" }],
address: "Braitenrain, Germany",
zoom: 10 });
需要动态填充markers
数组。我正在调用ajax并使用json数组返回。所以我必须遍历它并存储地址和html(html是多个数组元素的串联字符串)。
所以这是我的完整代码:
var markers = new Object();
$.post(
custom.ajaxurl,
{
action:'get_current_events'
},
function(jdata) {
$.each(jdata, function(i, data){
markers += "{ 'address': '" + data.address + "', 'html': '" + data.html + "'},";
});
$('#map_canvas').gMap({markers: markers.marks ,address: jdata[0].address, zoom: 10 });
答案 0 :(得分:1)
markers
似乎是一个对象数组。我不明白你为什么要进行字符串连接。您可以使用$.map
[docs]从回复中提取必要的信息:
$.post(custom.ajaxurl, {action:'get_current_events'}, function(jdata) {
var markers = $.map(jdata, function(data) {
return {address: data.address, html: data.html};
});
$('#map_canvas').gMap({
markers: markers,
address: jdata[0].address,
zoom: 10
});
});
MDN JavaScript Guide是对JavaScript的非常好的介绍。
答案 1 :(得分:1)
您正在尝试创建数组,而不是对象或字符串:
var markers = []; //Empty array
markers.push({ address: data.addres, ... });
答案 2 :(得分:0)
你应该做(你需要一个对象数组):
var markers = [];
$.post(
custom.ajaxurl,
{
action:'get_current_events'
},
function(jdata) {
$.each(jdata, function(i, data){
var marker = { address: data.address, html: data.html };
markers.push(marker);
});
$('#map_canvas').gMap({markers: markers ,address: jdata[0].address, zoom: 10 });