Javascript MVC动态谷歌地图标记

Javascript MVC动态谷歌地图标记,javascript,asp.net-mvc,google-maps,google-maps-api-3,Javascript,Asp.net Mvc,Google Maps,Google Maps Api 3,我正试图从我的MVC模型项目中绘制多个动态谷歌地图标记。我可以通过硬编码而不是动态编码来实现。我错过了什么 function codeAddress(index, value) { //var addressArray = ['Canada', 'India', 'America']; //$.each(addresses, function() //{ // var addresses = value.ASSET_N

我正试图从我的MVC模型项目中绘制多个动态谷歌地图标记。我可以通过硬编码而不是动态编码来实现。我错过了什么

function codeAddress(index, value)
    {
        //var addressArray = ['Canada', 'India', 'America'];
        //$.each(addresses, function()
        //{
        //    var addresses = value.ASSET_NAME;
        //});
        @for (int i = 0; i < Model.Count(); i++)
        {
            var addressArray = Model[i].ASSET_NAME;
        }

        //var geocoder = new google.maps.Geocoder();

        for (var x = 0; x < addressArray.Count(); x++)
        {
            geocoder.geocode({ 'address': addressArray[x] }, function (results, status)
            {
                if (status == google.maps.GeocoderStatus.OK)
                {
                    var marker = new google.maps.Marker({
                        map: map,
                        position: results[0].geometry.location                    
                    });
                } else {
                    alert("Geocode was not successful for the following reason: " + status);
                }
            });
        }
    }
函数代码地址(索引、值)
{
//var addressArray=[“加拿大”、“印度”、“美国”];
//$.each(地址、函数()
//{
//var地址=value.ASSET\u名称;
//});
@对于(int i=0;i
由于作用域的原因,您的
地址数组只存在于for循环中。这就是为什么在尝试获取
addressArray.Count()时会出现错误的原因

相反,先创建一个空数组,如下所示:

var addressArray = [];
for (int i = 0; i < Model.Count(); i++)
    {
        addressArray.push(Model[i].ASSET_NAME);
    }
而不是覆盖addressArray,您应该像这样推送:

var addressArray = [];
for (int i = 0; i < Model.Count(); i++)
    {
        addressArray.push(Model[i].ASSET_NAME);
    }
for(int i=0;i
=-=-=-编辑-=-=-=

我的缺点是,不知怎的,我认为它是纯javascript。遗憾的是,我对asp.net一无所知,但您应该使用asp.net构建一个javascript数组字符串,并将其分配给javascript addressArray。 所以,我想你可以试试这样:

@{
var addressArray = '[';
for (int i = 0; i < Model.Count(); i++)
    {
        if (i!=0){
             addressArray = addressArray + ',';
        };
        addressArray = addressArray + '"' + Model[i].ASSET_NAME+ '"' ;
    };
addressArray = addressArray + ']';
}

var addressArray = @addressArray;
@{
var addressArray='[';
对于(int i=0;i
使用上述代码,我在for(int I=0;I