0

目的地のリストとともに、グーグル遠隔マトリックスAPIからのリスト値があります。私が今やったことは次のとおりです。

1) geolocation から出力先リストの google places api と現在地 (lon & lat) を取得します。2) 目的地と現在地のリスト (経度と緯度) は、Google 遠隔マトリックス API から距離と期間のリストを出力しました。

これで、Google リモート マトリックスと宛先リストからのリスト値である 2 つの個別の出力が得られます。

両方とも、テーブルビューに表示するために出力関数に取り込まれました。問題は、これら2つの値をどのように組み合わせてテーブルビューの行に表示したいかということです。

この値を組み合わせて、テーブルビューの行に追加する必要があります。私が今持っているのは、テーブルビューの行に追加された最後の値だけです。コードと画像を見てみましょう:

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);、テーブルビューに追加するすべての出力が一覧表示されます。現在、最後の値のみがテーブルビューに追加されます。

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

2

申し訳ありませんが、コード スニペットにいくつかの問題があります。

いくつかの点でお役に立てれば幸いです。

  1. JavaScript での変数の宣言、スコープ、巻き上げには注意が必要です [ 1 ]。そして、最初のループの終わりに、最後のLabelオブジェクトのみを保存することに気付くでしょう。あなたの場合は、テキスト = 1.0kmのLabel

  2. 2 番目のループでは、同じエラーが発生します。画面上のテーブルビューのall.length倍を画面に追加しています。

  3. これらの 2 つのループが次々と順番に実行されることを理解する必要があります。次に、この解決策は、両方のループの長さが同じ場合にのみ機能します。

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 に答える