2014-03-28 43 views
0

我有以下JS处理表单,返回结果为JSON,然后应该在地图上标记json作为标记。尽管我确实得到了json响应,但没有绘制任何内容。我对JavaScript并不是很熟悉,所以有人可以告诉我下面的错误是什么?谷歌地图:从JSON加载标记

感谢

的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) 

(val.lat, val.lng) 

我仍然有同样的结果,

回答

1

的问题是关于$.each()

你传入key.latkey.lngaddMarker(),但是key是数组当前元素的索引。您必须使用val,因为它是真正的价值:

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

关于$.each()使用更多信息:https://api.jquery.com/each/

+0

在你的getJSON一个简单的console.log会有所帮助;) – MrUpsidown

+0

OK,这是有道理的,我现在已经改变了,但我仍然没有得到结果。我试图弄清楚console.log,我从来没有使用它,就像我说过我没有使用JavaScript很多 – Owen

+0

仍然没有,但是当我使用控制台它说:click方法是未定义的AddDomListner在最后。我有一个按钮,指出onclick =“plot()”。这会成为问题吗? – Owen