Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript多维数组不能作为数组访问,只能作为字符串访问_Javascript_Jquery_Arrays_Json_Google Maps - Fatal编程技术网

JavaScript多维数组不能作为数组访问,只能作为字符串访问

JavaScript多维数组不能作为数组访问,只能作为字符串访问,javascript,jquery,arrays,json,google-maps,Javascript,Jquery,Arrays,Json,Google Maps,我试图在谷歌地图上放置多个标记。我有一个JS,它构建了一个数组并将其传递给处理标记的Google函数。 问题是,当我试图访问假定的数组时,我只得到第一个字符,就像它是一个字符串一样 $(document).ready(function () { // initialize map to center on florida. initializeGMap(); var locations = []; @foreach (var item in Model)

我试图在谷歌地图上放置多个标记。我有一个JS,它构建了一个数组并将其传递给处理标记的Google函数。 问题是,当我试图访问假定的数组时,我只得到第一个字符,就像它是一个字符串一样

$(document).ready(function () {
    // initialize map to center on florida.
    initializeGMap();
    var locations = [];
    @foreach (var item in Model)
        {
            <text>        
            locations.push(@Html.Raw(Json.Encode("'" + item.Name + "'," + item.Location.Latitude + "," + item.Location.Longitude + "")));
            </text>
        }
    addMarker(locations);
});
$(文档).ready(函数(){
//初始化地图以佛罗里达为中心。
initializeGMap();
var位置=[];
@foreach(模型中的var项目)
{
locations.push(@Html.Raw(Json.Encode(“'+item.Name+”,“+item.Location.Latitude+”,“+item.Location.Longitude+”));
}
添加标记(位置);
});
我已经尝试了几个(阅读:20+)版本,包括JSON.stringify,before send,after send,等等。下面是它传递的函数:

function addMarker(locations) {

    var locations = JSON.stringify(locations);
    alert(locations + '\n' + locations[0][0] + '\n' + locations[0][1]);

    var infowindow = new google.maps.InfoWindow();

    var marker, i;

    for (i = 0; i < locations.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            map: map
        });

        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
            }
        })(marker, i));
    }
    alert("done");
}
功能添加标记(位置){
var locations=JSON.stringify(位置);
警报(位置+'\n'+位置[0][0]+'\n'+位置[0][1]);
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
当它到达带有'locations[x][x]'的行时,我会返回到'[',这是JSON字符串的第一个字符。它不会在数组中处理。 我遗漏了什么?

我通过以下方式解决了这个问题:

$(document).ready(function () {

    // initialize map to center on florida.
    initializeGMap();

    // serialize model locations
    var locationsToPass = @Html.Raw(Json.Encode(Model.Select(x => new { x.Name, x.Location.Latitude, x.Location.Longitude })));

    addMarker(locationsToPass);
});
在接收功能中:

    function addMarker(locations) {
    var infowindow = new google.maps.InfoWindow();
    var marker, i;
    for (i = 0; i < locations.length; i++) {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i].Latitude, locations[i].Longitude),
            map: map
        });

        google.maps.event.addListener(marker, 'click', (function (marker, i) {
            return function () {
                infowindow.setContent(locations[i].Name);
                infowindow.open(map, marker);
            }
        })(marker, i));
    }
}

我得到了。

你为什么写这行?
var locations=JSON.stringify(locations);
我只是在测试…如果我这样做:var test=[“test”,“second”,“third”],[“2test”,“2second”,“2third”];alert(test[1][1]);我在alert中得到了“2test…所以数组在JS中可以工作,但不知何故不适合我。。。
variable.constructor === Array