это вполне возможно. Вместо того, чтобы использовать MultiArray и индивидуально добавленные элементы массива, я просто добавил функцию для добавления в массив (вместо добавления вручную [0] [1] и т. Д.)
Как обычно, не проверено, надеюсь, это поможет!
//global mapData variable
var mapData = [];
//example function to add a location to mapData
function addLocation(lat,lng,title,body){
//push the new Object
mapData.push({
'lat':lat,
'lng':lng,
'title':title,
'body':body
});
}
//example function to actually call your insertMarkers jQuery
function insertMarkers(){
$('#map').data('bMap').insertMarkers({
"name":"Markers",
"data": mapData
});
}
//example, add a location to mapData
addLocation("51.3149757618329838",
"-0.1249757618329838",
"Science Museum",
"Exhibition Road, London SW7"
);
//example, add another location to mapData
addLocation("51.47769451182406",
"-0.0009441375732421875",
"Royal Observatory Greenwich",
"Blackheath Ave, Greenwich, London SE10"
);
//example, call the insertMarkers function (or just replace with your
//own insertMarkers using the mapData object.
insertMarkers();
Поскольку вы, в частности, спросили, как преобразовать ваш двумерный массив в данные, которые вы хотите предоставить своей функции карты, здесь вы идете.
//Your array
var MultiArray = new Array(2)
MultiArray [0] = new Array(4)
MultiArray [0][0] = "51.3149757618329838"
MultiArray [0][1] = "-0.1249757618329838"
MultiArray [0][2] = "Science Museum"
MultiArray [0][3] = "Exhibition Road, London SW7"
// how to loop and just use the insertLocation function
// provided above
// I really don't recommend this, if you can output the array directly
// you might as well just use the "addLocation" function (or your own variety)
// directly
for(var i = 0; i<MultiArray.length; i++){
addLocation(
MultiArray[i][0],
MultiArray[i][1],
MultiArray[i][2],
MultiArray[i][3]
);
}
Кроме того, вы можете избежать всей этой чепухи и сделать это (мне это не очень нравится, и я хочу инкапсулировать подобные вещи в функцию.)
var MultiArray = [];
MultiArray.push({
"lat": "51.3149757618329838",
"lng": "-0.1249757618329838",
"title": "Science Museum",
"body": "Exhibition Road, London SW7"
});
$('#map').data('bMap').insertMarkers({
"name":"Markers",
"data": MultiArray
});