2013-07-21 35 views
1

我正在研究一個Titanium應用程序,我需要在地圖上顯示多個標記。我通過JSON數組獲取這些標記的數據,可以找到它here。我沒有遇到任何錯誤,我甚至得到'Succes'警報,但仍然沒有顯示在地圖上。在Titanium中顯示JSON數組中的標記

var pin = []; 

var mapview = Ti.Map.createView({ 
    height : '90%', 
    mapType : Ti.Map.STANDARD_TYPE, 
    animate : true, 
    regionFit : true, 
    userLocation : true, 
    region : { 
     latitudeDelta : 0.05, 
     longitudeDelta : 0.05 
    } 
}); 


var xhr = Ti.Network.createHTTPClient({ 
    onload : function(e) { 
     var data = JSON.parse(this.responseText); 

     for (var i = 0; i < data.length; i++) { 
      pin[i] = Titanium.Map.createAnnotation({ 
       latitude : data.rows[i][7], 
       longitude : data.rows[i][8], 
       title : data.rows[i][3], 
       subtitle : data.rows[i][9], 
       pincolor : Titanium.Map.ANNOTATION_PURPLE, 
       animate : true, 
       myid : i 
      }); 
      mapview.addAnnotation(pin[i]); 
     } 
     Ti.API.debug(this.responseText); 
     alert('success'); 
    }, 
    onerror : function(e) { 
     Ti.API.debug(e.error); 
     alert('error'); 
    }, 
    timeout : 5000 
}); 

xhr.open("GET", query); 
xhr.send(); 

win.add(mapview); 
win.open(); 

任何幫助非常感謝!

回答

0

終於搞定了。將問題中的代碼調整爲:

var mapview = Ti.Map.createView({ 
    height : '90%', 
    mapType : Ti.Map.STANDARD_TYPE, 
    animate : true, 
    regionFit : true, 
    userLocation : true, 
    region : { 
     latitudeDelta : 1.7, 
     longitudeDelta : 1.7 
    } 
}); 

win.add(mapview); 


var annotations = []; 

var query = '..JSON URL..'; 
var xhr = Ti.Network.createHTTPClient({ 
    onload : function(e) { 
     var data = JSON.parse(this.responseText); 
     Ti.API.info('Datum=' + data.rows[1][0]); 
     for (var i = 0; i < data.rows.length; i++) { 
      var marker = Titanium.Map.createAnnotation({ 
       latitude : data.rows[i][7], 
       longitude : data.rows[i][8], 
       title : data.rows[i][3], 
       subtitle : data.rows[i][9], 
       pincolor: Ti.Map.ANNOTATION_GREEN, 
       animate : true, 
       myid : i 
      }); 

      mapview.addAnnotation(marker); 

     } 
     Ti.API.debug(this.responseText); 
    }, 
    onerror : function(e) { 
     Ti.API.debug(e.error); 
     alert('error'); 
    }, 
    timeout : 5000 
}); 

xhr.open("GET", query); 
xhr.send(); 

這將使用多個註釋填充地圖。