我正在使用钛和谷歌地图v2的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();
}
});
这是我在地图前一页的代码片段,即带有tableview的页面:
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 :(得分: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();
}
});