如何在钛框架中处理多个注释/精确点击事件?

时间:2011-05-23 06:48:59

标签: android-mapview titanium

我在谷歌地图的钛框架中做了一个应用程序。我在地图上有多个位置,显示为注释/精确定位。我也采用了注释的点击事件。 Annotaions将在下一个屏幕中显示tableview中的数据。当我回到Google Maps屏幕时,我必须单击两次按钮而不是一次。

查询:

1)任何人都可以帮我解决如何处理后退事件的情况,只需点击1次即可返回,而不是2次点击,并且不会在2次点击后退按钮时将数据渲染2次。同样的屏幕出现2后退按钮事件数据的时间。

2)如果我在地图上有很多注释,那么当它执行click事件时如何获取相同/特定精确定位/注释的信息,并且应该在下一个屏幕中将精确数据显示为tableview。(即如果我有FOR LOOP,并且当它向我们显示多个注释/精确定位时,所有注释应该获得所有细节,并且应该将自己的数据显示到下一个屏幕tableview。)

任何有用的代码或链接都将受到赞赏...... !!!

我在下面给出了代码段:

mapview.addEventListener('click', function(evt) {
    var annotation = evt.annotation;
    var title = evt.title;
    var clickSource = evt.clicksource;
    // alert(annotation + 'tit'+title+'clickSource'+clickSource);
    // alert("Btn Pressed");

    if(evt.clicksource == 'rightButton') {
        Titanium.App.Properties.setString("latitude",latitude.item(0).text);
        Titanium.App.Properties.setString("longitude",longitude.item(0).text);
        Titanium.App.Properties.setString("city",city.item(0).text);
        Titanium.App.Properties.setString("address",address.item(0).text);
        Titanium.App.Properties.setString("OwnerInstitution",OwnerInstitution.item(0).text);
        Titanium.App.Properties.setString("TerminalDesc",TerminalDesc.item(0).text);
        Titanium.App.Properties.setString("State",state.item(0).text);
        Titanium.App.Properties.setString("Zip",Zip.item(0).text);
        Titanium.App.Properties.setString("Charge",Charge.item(0).text);

    var tab = Titanium.UI.currentTab;
        var win1 = Titanium.UI.createWindow({
            url:'ATMDetails.js',
            title:'ATM Details',
            // latitude:win1.latitude
        });
        tab.open(win1, {
            animated:true
        });
    }
});

1 个答案:

答案 0 :(得分:2)

问题1 我没说错。

问题2 - 据我所知,您希望显示用户点击的特定注释的详细信息。 的解决方案: 使用for循环加载所有信息的函数定义了一个应该存储特定anotaion数据的数组。喜欢

annotations = []; //updated
for (i=0; i < yourfeedsData.length; i++) {

      var detailData= [];

        //Your data
         var latitude =   latitude.item(0).text;
         // all list of your data .......


        // creating annotaions 
        var annotaion = Titanium.Map.createAnnotation( { 
                 title:'Your title',
                animate:true
            });  

      // pushing the data to array ..... all your values like,
      detailData.push({lat:latitude,...... });

      // setting data to your annotaion object
      annotaion.detailData=detailData; 

      // creating annotation array
          annotations[i] = annotaion ; //updated
     }

    your_mapView.addAnnotations(annotations); // updated

并在您的点击事件中,获取注释数据并将其传递给您的窗口详细信息。并使用该详细数据显示在列表中。

 // get the detail data
    var detailData = evt.annotation.detailData;
 if(evt.clicksource == 'rightButton') {

                var tab = Titanium.UI.currentTab;
                var win1 = Titanium.UI.createWindow({
                    url:'ATMDetails.js',
                    title:'ATM Details',
                    //latitude:win1.latitude
                });
               // PASS THE DATA TO YOUR WINDOW  
               win1 .detailData = detailData;

                tab.open(win1, {
                    animated:true
                });

}