我在完成这件事上经历了一段艰难的时期,而且我所做的所有研究都没有得到积极的结果。简而言之,我需要将一组标记从我的代码发送到我的 MVC 视图(通过模型并将其设置为隐藏字段),以便 Google 地图可以使用该数组在地图上放置标记。我曾尝试将其构建为 List,然后使用 JSON 序列化将其转换为字符串,但该格式不会被 Google API 识别。以前有没有人成功完成过这个??
这是我根据 CodeMonkey 的答案更新的代码,但标记仍然没有放置。我认为它发生在 addMarker 函数的某个地方......
    var lat = $("#Latitude").val();
    var lng = $("#Longitude").val();
    var myOptions = {};
    var map = null;
    var marker = null;
    var global_markers = [];
    var infowindow = new google.maps.InfoWindow({});
    var geodata;
    var markers = [];
    function map_initialize() {
        var myLatlng = new google.maps.LatLng(lat, lng);
        myOptions = {
            zoom: 14,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        @foreach (var item in Model.AllSearchResults)
        {
            <text>try 
        {
            var lat = '@item.Latitude';
            var lng = '@item.Longitude';
            var name = '@item.Name';
            var url = '@Url.Action("GetMarker", "Base")';
            var model = { "Latitude": lat, "Longitude": lng, "Name": name };
                $.ajax({
                    type: "POST",
                    data: model,
                    dataType: "json",
                    url: url,
                    success: function (data) {
                        geodata = data;
                        JSONString = JSON.stringify(geodata);
                        var valuesToPush = new Array();
                        valuesToPush[0] = data.Latitude;
                        valuesToPush[1] = data.Longitude;
                        valuesToPush[2] = data.Name;
                        markers.push(valuesToPush);
                        addMarker();
                    },
                    error: function () {
                        alert("fail");
                    }
                });
            } 
            catch (err) { }</text>
            }
        }
    function addMarker() {
        for (var i = 0; i < markers.length; i++) {
            var lat = parseFloat(markers[i][0]);
            var lng = parseFloat(markers[i][1]);
            var name = markers[i][2];
            var location = new google.maps.LatLng(lat, lng);
            var contentString = '<div class="infowindow"><p>' + name + '</p></div>';
            var marker = new google.maps.Marker({
                position: location,
                map: map,
                title: name
            });
            marker['infowindow'] = contentString;
            global_markers[i] = marker;
            google.maps.event.addListener(global_markers[i], 'click', function () {
                infowindow.setContent(this['infowindow']);
                infowindow.open(map, this);
            });
        }
    }
    google.maps.event.addDomListener(window, 'load', map_initialize);