如何创建javascript多维数组?

时间:2014-02-18 12:36:57

标签: javascript jquery ajax google-maps spring-mvc

这是我的要求

需要像这样创建数组。我使用Spring mvc + ajax + jquery + google map 3.0 我将这些值单独作为json响应得到。

1. city name
2. long
3. lat
var markers = [['Bondi Beach', -33.890542, 151.274856],['Coogee Beach', -33.923036, 151.259052],['Cronulla Beach', -34.028249, 151.157507],['Manly Beach', -33.80010128657071, 151.28747820854187],['Maroubra Beach', -33.950198, 151.259302]];

如何用javascript数组函数创建上面的循环。可以记录超过20,30 是3D阵列吗?

请帮我解决这个问题

感谢所有

下面的

显示我的脚本代码并帮助我修改它以获得我的目标结果

function jsonResponse(){
    var longitude=0;
    var latitude=0;
    var merchant='';
    var total =0;

    $.ajax({ 
        url: 'merchantsList.html', 
        dataType: 'json', 
        contentType: 'application/json',
        mimeType: 'application/json',
        success: function(data) {
            longitude=data.longitude;
            latitude=data.latitude;
            merchant=data.merchant;
            total = data.length;
        },
        error:function(data,status,er) { 
            alert("error: "+data+" status: "+status+" er:"+er);
        }
    });

    var markers = [['Bondi Beach', -33.890542, 151.274856],['Coogee Beach', -33.923036, 151.259052],
                   ['Cronulla Beach', -34.028249, 151.157507],['Manly Beach', -33.80010128657071, 151.28747820854187],
                   ['Maroubra Beach', -33.950198, 151.259302]];
    var infowindow = new google.maps.InfoWindow(), marker, i;
    for (i = 0; i < markers.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(latitude, longitude),
            map: map
            });}
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infowindow.setContent(markers[i][0]);
            infowindow.open(map, marker);
        };
    })(marker, i));

}

3 个答案:

答案 0 :(得分:1)

在javascript中创建多维数组

var iMax = 20;
var jMax = 10;

var f = new Array();

for (i=0;i<iMax;i++) {

 f[i]=new Array();

 for (j=0;j<jMax;j++) {

  f[i][j]=0;

 }

}

答案 1 :(得分:1)

我假设你在谈论如何迭代你的标记......你现在这样做:

var infowindow = new google.maps.InfoWindow(), marker, i;
for (i = 0; i < markers.length; i++) {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(latitude, longitude),
        map: map
        });
}

但这不起作用:new google.maps.LatLng(latitude, longitude)。您需要从当前标记获取lat和long:

 position: new google.maps.LatLng(markers[i][1], markers[i][2]),

答案 2 :(得分:1)

一些疯狂的假设:var标记是样本数据,并且您希望将其替换为ajax查询返回的内容;城市名称== ajax数据中的商家。

如果从merchantsList.html返回的数据有多个商家/长/拉项,您需要迭代数据并将每个数据添加到标记数组。
那将是

var markers = [];

// ajax call start here..
    // ...
    success: function(data) {
        var i, item;
        for (i = 0; i < data.length; i++) {
            item = data[i];
            markers.push([item.merchant, item.longtitude, item.latitude]);
        }
    },
// ajax call end code here