2014-03-13 65 views
0

我正在使用鈦和Google Maps v2 for android模塊。我有一個表格視圖,當點擊時,根據行打開一個新的窗口,我正在傳遞一些基於rowData的屬性。這工作正常,現在我的問題是,用戶可以選擇單擊地圖視圖按鈕並查看地圖上的引腳列表,而不是我的表格視圖。我需要讓用戶點擊任何給定的註釋(比如用戶可以點擊一行)並打開一個窗口,根據點擊的具體註釋向其傳遞屬性。我不知道如何解決這個問題。我在地圖上有一個事件監聽器,正在檢查源代碼,但我不知道如何訪問打開新窗口所需的註釋屬性。我的代碼是低於我的窗口,它包含了一組從先前的頁面傳遞給它的註釋,其中一個Web服務拉下信息,並在每次循環添加註釋的地圖視圖:如何打開基於點擊註釋的屬性窗口

var MapModule = require('ti.map'); 

var Map = MapModule.createView({ 
    userLocation: true, 
    mapType: MapModule.NORMAL_TYPE, 
    animate: true, 
    region:{latitude: 53.422606, longitude: -7.944465, latitudeDelta: 4, longitudeDelta: 4}, 
    top: '50dp', 
    left:'10dp', 
    right:'10dp', 
    bottom:'10dp', 
    borderRadius:6, 
    annotations:self.MapAnnotations, 
    zIndex:200 
}); 


Map.addEventListener('click', function(e){ 
    Ti.API.info("e.type ----------------- " + e.type); 
    Ti.API.info("stringified e.clicked source ---------------- " + JSON.stringify(e.clicksource)); 
    var check = JSON.stringify(e.clicksource); 

    if (JSON.stringify(e.clicksource) == '"title"'){ 
     console.log("Can i get the parent ------- " + e.parent); 
     console.log("In the if statment for title---------------"); 
     console.log("e.jobID --------- " + e.jobID); 

     var w = Titanium.UI.createWindow({ 
       url:'ui/handheld/SearchJobsDetailed.js', 
       backgroundColor: "#204581", 
       JobID:e.jobID, 
       Title:e.title, 
       Trade:e.trade, 
       Urgency:e.urgency, 
       Description: e.description, 
       Photo: e.photo, 
       JobStatus: e.jobStatus, 
       ClientID: e.clientID, 
       DatePosted: e.datePosted, 
       Email:e.Email, 
       Mobile:e.Mobile, 
       navBarHidden:true, 
       APP_URL:e.APP_URL 
      }); 

      w.open(); 
    } 
}); 

這是我的代碼從頁面之前的地圖,即與實現代碼如下頁面中的片段:

Map_view.addEventListener("click", function (e){ 
    var Map_window=Ti.UI.createWindow({ 
     url:"ui/handheld/MapWindow.js", 
     backgroundColor: "transparent", 
     navBarHidden:true, 
     APP_URL:APP_URL, 
     modal:false, 
     MapAnnotations:MapAnnotations 
    }); 

SearchJobs_Tab.open(Map_window, {animated:true}); 
}); 

和部分地方,我推註釋數組:

for(i=0;i<data.length;i++){ 

    Annotations[i]= MapModule.createAnnotation({ 
     latitude: data[i].Latitude, 
     longitude: data[i].Longitude, 
     title: capitaliseFirstLetter(data[i].title), 
     jobID:data[i].jobID, 
     title:data[i].title, 
     trade:data[i].trade, 
     urgency:data[i].urgency, 
     description: data[i].description, 
     datePosted: data[i].datePosted, 
     photo: data[i].photo, 
     jobStatus: data[i].jobStatus, 
     clientID: data[i].clientID, 
     Email: data[i].Email, 
     Mobile: data[i].Mobile, 
     APP_URL:APP_URL 
    }); 

    MapAnnotations.push(Annotations[i]); 

回答

0

使用e.annotation來引用已被點擊的註釋。你的地圖點擊eventListener應該看起來像這樣。

Map.addEventListener('click', function(e){ 

    if (e.clicksource === 'pin'){ 
     var w = Titanium.UI.createWindow({ 
      url:'ui/handheld/SearchJobsDetailed.js', 
      backgroundColor: "#204581", 
      JobID:e.annotation.jobID, 
      Title:e.annotation.title, 
      Trade:e.annotation.trade, 
      Urgency:e.annotation.urgency, 
      Description: e.annotation.description, 
      Photo: e.annotation.photo, 
      JobStatus: e.annotation.jobStatus, 
      ClientID: e.annotation.clientID, 
      DatePosted: e.annotation.datePosted, 
      Email:e.annotation.Email, 
      Mobile:e.annotation.Mobile, 
      navBarHidden:true, 
      APP_URL:e.annotation.APP_URL 
     }); 

     w.open(); 
    } 
});