我创建了一个循环通过一组返回的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之前设置了吗?
答案 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]);