Json:
[{"latitude":"42.658673","longitude":"-73.810479","place":"Bethany Reformed Church"}]
Полная функция:
google.load("visualization", "1", {packages:["map"]});
$(function() {
// when document loads, grab the json
$.getJSON('places.json', function(data) {
// once grabbed, we run this callback
// setup the new map and its variables
var meetings = new google.visualization.DataTable();
meetings.addRows(data.length); // length gives us the number of results in our returned data
meetings.addColumn('number', 'latitude');
meetings.addColumn('number', 'longitude');
meetings.addColumn('string', 'place');
// now we need to build the map data, loop over each result
$.each(data, function(i,v) {
// set the values for both the location and place
alert(i + ":" + v.latitude + ":" + v.longitude + ":" + v.place);
// The alert displays the correct values
meetings.setValue(i, 0, v.latitude);
meetings.setValue(i, 1, v.longitude);
meetings.setValue(i, 2, v.place);
//the code stalls and nothing else gets executed
});
// finally, create the map!
var map = new google.visualization.Map(document.getElementById('map_div'));
map.draw(meetings, {showTip: true, mapType: 'normal'});
});
});
Если я предупреждаю () значения json внутри $ .each, они верны, но код останавливается, когда значения json находятся в встречи .setValue (). Я пришел к такому выводу, потому что, если я поставлю предупреждение после встречи. SetValues, ничего не появится.
Вывод оповещения:
0:42.658673:-73.810479:Bethany Reformed Church
Если я жестко закодирую фактические местоположения в встречи. SetValue (), он правильно отображает местоположение.
Как это:
$.each(data, function(i,v) {
// this maps the location correctly
meetings.setValue(i, 0, 42.658673);
meetings.setValue(i, 1, -73.810479);
meetings.setValue(i, 2, 'Bethany Reformed Church');
});
Почему код, похоже, зависает в $ .each, когда используются переменные json?
Я использовал это в качестве руководства: Совместное использование jQuery, JSON и Google Geo API визуализации