2011-11-09 57 views
0

我已经创建了一个函数,通过一组返回的JSON循环。然后我需要在google.maps.LatLng()中显示从JSON中提取的latlong数据。事情是当我试图做到这一点,我只是空返回,我不明白为什么。我怎样才能得到这个变种内谷歌google.maps.LatLng()

这里是我的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加载之前已经设置了它?

回答

1

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

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

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

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

这不会因为我的数组的工作是这样的:'$ postcodeArray =阵列( 阵列( '经纬度'=> '51 0.5381031,0.0495182' , 'energyrating'=> 'A'), 阵列('latlong'=> '51 .5041762,-0.079744','energyrating'=>'B'), array('latlong'=> '51 .4461024,0.2201219','energyrating'=>'C') )我本来应该包括它原来对不起 –

+0

我想你忘了显示数组的样子 –