如何让这个var在google.maps.LatLng()中运行

时间:2011-11-09 20:01:28

标签: javascript jquery ajax json google-maps

我创建了一个循环通过一组返回的JSON的函数。然后我需要在google.maps.LatLng()中显示从JSON中提取的latlong数据。事情是,当我尝试这样做时,我只是返回null,我无法弄清楚原因。

这是我的js函数

function addNew(json) {
if(json.length > 0) {
    for(var i = 0; i < json.length; i++) {

        var callback = function(object) {
            return function(results, status) {

                    var location = new google.maps.LatLng(object.latlong);

                    var image = '/img/markers/' + object.energyrating + '.png';
                    var marker = new google.maps.Marker({
                        map: map,
                        position: location,
                        icon: image
                    });
            };
        }(json[i]);

        geocoder.geocode({ 'address': address }, callback);
    }
} else {
    alert("Sorry, no data was found.");
}
};

但是如果我只是将object.latlong返回给它自己就可以了。它只是在LatLng()内部不感兴趣。是因为它已经在加载JSON之前设置了吗?

2 个答案:

答案 0 :(得分:1)

所以你的object.latlong看起来像'51 .5381031,0.0495182',这是一个字符串。您需要将两个数字传递给google.maps.LatLng()函数。这样做应该很简单,我建议使用.split()将其转换为两个元素的数组。

var latlng = object.latlong.split(",");
var location = new google.maps.LatLng(latlng[0], latlng[1]);

答案 1 :(得分:0)

我可能会弄错,但我认为object.latlong是一个数组,所以你想这样做:

var location = new google.maps.LatLng(object.latlong[0], object.latlong[1]);