0

我有一个来自谷歌远程矩阵 api 的列表值以及目的地列表。我现在所做的是:

1) 从地理位置获取输出目的地列表 google places api 和当前位置(经度和纬度)。2)目的地和当前位置列表(经度和纬度)已从谷歌远程矩阵api输出距离和持续时间列表。

现在有两个单独的输出,分别是来自谷歌远程矩阵和目标列表的列表值。

两者都被带到输出函数以显示到表格视图。所以现在的问题是,我想如何组合这两个值并显示在 tableview 行中?

我需要组合这个值并添加到 tableview 行中。我现在拥有的只是添加到 tableview 行中的最后一个值。让我们看看代码和图像:

var getValue = function(matrix,all) {
    var matrix;
    var all;
    //Ti.API.info(matrix);
    //Ti.API.info(all);
    var section = Titanium.UI.createTableViewSection();
    var data = [];

    for (var i=0;i<matrix.length;i++)    
    {       
         var distance = matrix[i].elements[0].distance.text;
         Ti.API.info(distance);     

         var lblDist = Ti.UI.createLabel({
         width: 'auto', height: 23, left: 52,
         textAlign: "left", font: {fontSize: 10, fontFamily:"HelveticaNeue-Bold"}, bottom: -2});
         lblDist.text = distance;       
    };    

    for (var c=0;c<all.length;c++)    
    {

         var row = Ti.UI.createTableViewRow({height:45,selectedBackgroundColor: '#dbd9cc'}); 

         var label = Ti.UI.createLabel({left:52,top:2,        
         width:245,height:30,font:{fontFamily:'Open Sans',fontSize:20,fontWeight:'bold'}});

         var sTitle = all[c].name;
         label.text = sTitle;
         //lblDist.text = distance;

         row.add(label);
         row.add(lblDist);
         section.add(row);
         tableview.data=[section]; 
         self.add(tableview);   
    }
};

当我这样做Ti.API.info(distance);时,它将列出我想要添加到 tableview 中的所有输出。现在只有最后一个值添加到 tableview 中。

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

2

很抱歉,您的代码片段中有几个问题。

让我试着帮助你一些观点。

  1. 您需要注意 JavaScript [ 1 ] 中变量的声明、范围和提升。然后,您会意识到在第一个循环结束时,您只会存储最后一个Label对象,在您的情况下,Label with text = 1.0km

  2. 在您的第二个循环中,发生了同样的错误。您正在将屏幕上的tableview的all.length 倍添加到屏幕上。

  3. 您需要了解这两个循环将依次运行。然后,此解决方案仅在两个循环具有相同长度时才有效。

基于第三点,我可以写一个示例解决方案。

var getValue = function(matrix,all) {
     var lblDist = null;
     var label = null;
     var data = [];

     for (var i=0;i<matrix.length;i++) {
          var row = Ti.UI.createTableViewRow({height:45,selectedBackgroundColor: '#dbd9cc'}); 
          lblDist = Ti.UI.createLabel({width:'auto', height: 23, left: 52, textAlign: "left", font: {fontSize: 10, fontFamily:"HelveticaNeue-Bold"}, bottom: -2});
          lblDist.text =  matrix[i].elements[0].distance.text;       
          label = Ti.UI.createLabel({left:52,top:2,width:245,height:30,font:{fontFamily:'Open Sans',fontSize:20,fontWeight:'bold'}});
          label.text = matrix[i].elements[0].name.text;
          row.add(label);
          row.add(lblDist);
          data.push(row);
     }

     self.add(tableview);
     tableview.setData(data);
 };
于 2016-02-17T03:12:16.057 回答