2011-11-09 82 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

我想你忘了顯示數組的樣子 –