2014-03-13 67 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(); 
    } 
});