2011-05-23 54 views
1

我已經在谷歌地圖的鈦框架中的應用。我在地圖上有多個位置,並顯示爲註釋/精確位置。我也採取了註釋的點擊事件。 Annotaions會在下一個屏幕的tableview中顯示數據。當我回到Google Maps屏幕時,我必須兩次點擊後退按鈕,而不是一次。如何處理鈦框架中的多重註釋/精確點擊事件?

查詢:

1)任何機構可以幫助我如何處理這應該回來了1次點擊改爲只2次點擊,不應該呈現數據的2次點擊後面的2倍背面事件按鈕。在同一屏幕上出現2次後退按鈕事件數據。

2)如果我在地圖上有很多註釋,那麼如何獲取相同/特定的pinpoint/annotation的信息,當它執行click事件時,並且應該在下一個屏幕中顯示pinpoint的數據作爲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 
     }); 
    } 
}); 

回答

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

} 
+0

1) annotaion.detailData = detailData; 上面的代碼annotation.detailData不存在。你能指導我如何使用註釋獲取數組並存儲它。 我試過了,但我得到(未定義)答覆。你能給我一些提示嗎?? 2)detailData.push({lat:latitude,......}); 上面的代碼有{lat:latitude} .. {lat}有什麼用處......我認爲這可能是關鍵,{latitude}是價值。但我已嘗試顯示{經緯}值,但它也是undefined..latitude存在,我已檢查它進入警戒狀態。 我需要上述兩個查詢的分辨率 – Developer 2011-05-24 09:28:53

+0

@Mishal:如果您嘗試答案,它不工作要麼使用評論,要麼追加你的嘗試,並指出人們對這個更新。 ([已鏈接到您已被拒絕的編輯](http://stackoverflow.com/suggested-edits/49856)) – 2011-05-24 09:42:48

+0

@Mishal,你是否在for循環中創建所有註釋並將其正確添加到地圖中? – 2011-05-24 10:11:34

相關問題