使$ .getJSON立即可用与for

时间:2014-05-19 04:18:01

标签: javascript php google-maps

修改

$.getJSON(url, function (data) {
var x = 0;
var places = [];
$.each(data.lugar, function (i, user) {
    places[x] = {
        canEdit: false,
        lat: user.latt,
        lng: user.lng,
        name: "Somewhere "+x
    };
    alert(isNumber(places[x].lng));
    x++;
}).promise().done(function () {
    $(document).ready(function() {
        runExample5();
    });
});
});

所以我试图在这样的javascript中填充地图

{ showOnLoad: places ....

它可以通过这样的for循环完成工作(它确实显示了标记)这个工作

 var places = [];
  for(var x= 0; x<10; x++){
  places[x] = {
    canEdit: false,
    lat: 53.79+x,
    lng:-1.5426760000000286+x,
    name: "Somewhere "+x

}
}

但是当我尝试使用我在其他页面上从JSON / PHP收到的信息填充它时,它不起作用,并且它不会填充标记......

 var places = [];
$.getJSON(url, function (data) {
var x = 0;
$.each(data.lugar, function (i, user) {
    places[x] = {
        canEdit: false,
        lat: user.latt,
        lng: user.lng,
        name: "Somewhere "+x
    };
    x++;
}).promise().done(function () {
});
});



function runExample5(a) {
 $("#search-for-places").mapsed({

    showOnLoad: places,
    allowGeo: true, 
    disablePoi: true


});                                 
 }


 $(document).ready(function() {
runExample5();

 });

除非我调用另一个函数然后它会自动显示标记但我似乎无法在地图第一次加载时得到它但我在使用FOR循环时得到它。

1 个答案:

答案 0 :(得分:1)

只是为了完成,这是正确的解决方案:

$.getJSON(url).then(function (data) {
    // instead of map(), you could also use that tedious `each` loop
    // it would work the same
    return $.map(data.lugar, function (i, user) {
        return {
            canEdit: false,
            lat: user.latt,
            lng: user.lng,
            name: "Somewhere "+x
        }
    });
}).done(function (places) {
    $(document).ready(function() {
        // if you wanted to call a runExample5 function, make `places` a parameter
        $("#search-for-places").mapsed({
            showOnLoad: places,
            allowGeo: true, 
            disablePoi: true
        });
    });
});