長さが1、場合によっては2または3である配列から、緯度と経度を格納しようとしています。
コードは次のとおりです。
var latitude,longitude;
$.each(data.results, function (i, item) {
var name = item.from_user;
var img = item.profile_image_url;
var text=item.text;
var profile_img=item.profile_image_url;
var url=(item.entities.urls.length > 0 ? item.entities.urls[0].url : '');
Placemaker.getPlaces(text,function(o){
console.log(o);
if (typeof(o.match!=='undefined') ||(o.length==1)){
latitude=o.match.place.centroid.latitude, longitude=o.match.place.centroid.longitude;
console.log(latitude,longitude);}
else if (typeof(o.match[0]!=='undefined') ||(o.match.length==2)){
latitude=o.match[0].place.centroid.latitude, longitude=o.match[0].place.centroid.longitude;
console.log(latitude,longitude);
}
});
array.push({name:name,img:img,text:text,latitude:latitude,longitude:longitude,profile_img:profile_img,url:url});
このコードから、配列の長さが1の場合、緯度と経度の値のみを取得します。したがって、最初のifのみが実行されます。console.logを使用して配列を出力すると、緯度と経度の値が存在しないため、他の配列からも値を取得できるように、他の配列を修正しようとしています。ループは、配列に入れる前にすべての値の取得を終了する必要があると思います。
ツイートの場所を介してグーグルマップにツイートを出力しようとしています。ツイートのテキストから場所をジオコーディングするために、ジオコードではなくyahooプレースメーカーを使用しています。
これは、プレースメーカーの配列構造のスナップショットですhttp://www.flickr.com/photos/codepo8/3553188917/
これは、値を取得しようとしている他の配列ですObject {match = [2]}