Как обработать аннотацию Mutliple / событие точного щелчка в титановой структуре? - PullRequest
1 голос
/ 23 мая 2011

Я сделал приложение в Titanium Framework для Google Maps. У меня есть несколько мест на карте, которые отображаются как аннотации / точечные. Я взял событие клика аннотации также. Аннотации будут отображать данные в виде таблицы на следующем экране. Когда я возвращаюсь на экран Карт Google, мне нужно нажимать кнопку «Назад» дважды, а не один раз.

Запросы:

1) Может ли кто-нибудь помочь мне разобраться, как обрабатывать событие возврата, которое должно возвращаться одним щелчком вместо двух нажатий и которое не должно отображать данные 2 раза при двух нажатиях кнопки возврата. Здесь появляется тот же экран 2 время для данных о событии кнопки возврата.

2) Если у меня много аннотаций на карте, то как получить информацию о той же / конкретной точке / аннотации, когда она выполняет событие щелчка и должна отображать данные точки в виде таблицы на следующем экране (т.е. если у меня есть FOR LOOP и из этого цикла, когда он показывает нам множественную аннотацию / точную точку, вся аннотация должна получить все детали и должна показать свои собственные данные для следующего просмотра таблицы экрана.)

Любой полезный код или ссылка будут оценены ... !!!

Ниже приведен фрагмент кода:

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 Ответ

2 голосов
/ 23 мая 2011

Для вопроса 1 Я неправильно понимаю вашу точку зрения.

Для вопроса 2- Как я понимаю, вы хотите показать подробности конкретной аннотации, гдепользователь нажал. Решение: Функция, в которую вы загружаете всю информацию, используемую для цикла for, определяет массив, который должен хранить данные конкретной анотации.например,

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
                });

}
...