Javascript 谷歌地图:从JSON加载标记

Javascript 谷歌地图:从JSON加载标记,javascript,json,google-maps,google-maps-api-3,Javascript,Json,Google Maps,Google Maps Api 3,我有下面的JS,它处理一个表单,将结果作为JSON返回,然后将JSON作为标记绘制在地图上。虽然我得到了一个json响应,但没有绘制任何内容。我不太熟悉Javascript,所以有人能告诉我下面的错误是什么吗 谢谢 JSON: [ { "lat": "53.598660370500596", "lng": "-113.59166319101564" } ] Javascript $(function () { $('#search').c

我有下面的JS,它处理一个表单,将结果作为JSON返回,然后将JSON作为标记绘制在地图上。虽然我得到了一个json响应,但没有绘制任何内容。我不太熟悉Javascript,所以有人能告诉我下面的错误是什么吗

谢谢

JSON:

[
    {
        "lat": "53.598660370500596",
        "lng": "-113.59166319101564"
    }
]
Javascript

$(function () {
    $('#search').click(function () {
        var projectNumber = $('#project_number').val();
        var setdistance = $('#setdistance').val();
        var companyType = $('#company_type').val();

        //syntax - $.post('filename', {data}, function(response){});
        $.post('business_location_get_map.php', {
            project_number: projectNumber,
            setdistance: setdistance,
            company_type: companyType
        }, function (ret) {
            $('#result').html(ret);
        });
    });
});

function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(53.5435640000, -113.5),
        zoom: 8
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
    mapOptions);
}

google.maps.event.addDomListener(window, 'load', initialize);

function plot() {
    $.getJSON('business_location_get_map.php', function (data) {
        var location;
        $.each(data, function (key, val) {
            addMarker(key.lat, key.lng);
        });
    });
}

function addMarker(lat, lng) {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lng),
        map: map,
        icon: redImage
    });
    markersArray.push(marker);
}

google.maps.event.addDomListener('search', 'click', plot);
编辑:

我变了

(key.lat, key.lng)


我仍然有相同的结果,

问题是关于
$。each()

您正在将
key.lat
key.lng
传递到
addMarker()
,但是
key
是数组中当前元素的索引。必须使用
val
,因为它是实际值:

$.each(data, function (key, val) {
   addMarker(val.lat, val.lng);
});

有关
$用法的详细信息。each()

在getJSON中使用一个简单的console.log会有所帮助;)好的,这是有道理的,我现在已经改变了,但是我仍然没有得到结果。我会尝试找出console.log,我以前从未使用过它,就像我说的,我不使用javascript,直到什么都不使用,但是当我使用控制台时,它会说:click方法对于AddDomListner最后是未定义的。我有一个按钮,上面写着onclick=“plot()”。这就是问题所在吗?您已经在
#search
元素上注册了一个单击事件。为什么不使用它来调用
plot()
函数呢?
$.each(data, function (key, val) {
   addMarker(val.lat, val.lng);
});