我正在尝试构建一个应用程序,一旦他或她点击地址,它就会为用户提供指导。我的应用程序的结构是这样的:
我已经设法以列表形式编译我想要的所有地址,这意味着用户可以单击该地址,它将加载第二页。查看下面的图片:
上图显示了我当前的应用程序和我当前的开发阶段,它被卡在那里,当应用程序加载时它显示页面 A,当你点击任何地址时,它会转到页面 B。我的应用程序的页面应该是带有标记的地图,显示地图中地址的确切位置,并在可能的情况下提供从用户当前位置到确切地址的行车路线。查看下面的图片:
第二张图片正是我想要实现的,这意味着一旦用户点击任何地址,将显示一张地图,标记指向地址的确切位置(纬度和经度),我需要正好就像图片的样子。
我的代码如下:在我的视图面板中,我有以下代码:
Ext.define('List.view.PresidentList', {
extend: 'Ext.List',
xtype: 'presidentlist',
requires: ['List.store.Presidents'],
config: {
xtype:'container',
title: 'Takaful Branch',
//grouped: true,
itemTpl: '{firstName} {lastName}',
styleHtmlContent: true,
store: 'Presidents',
onItemDisclosure: true,
}
});
在视图面板中我也有:
Ext.define('List.view.PresidentDetail', {
extend: 'Ext.Panel',
xtype: 'presidentdetail',
config: {
title: 'Details',
styleHtmlContent: true,
scrollable: 'vertical',
tpl: [
'Google Map Goes Here'
]
}
});
我的视图文件夹中的最后一个文件是:
Ext.define('List.view.Main', {
extend: 'Ext.navigation.View',
xtype: 'mainpanel',
requires: [
'List.view.PresidentList',
'List.view.PresidentDetail'
],
config: {
items: [
{
xtype: 'presidentlist'
},
]
}
});
这是我的商店:
Ext.define('List.store.Presidents', {
extend: 'Ext.data.Store',
config: {
model: 'List.model.President',
sorters: 'lastName',
grouper : function(record) {
return record.get('lastName')[0];
},
data: [
{ firstName: "PEJABAT WILAYAH SARAWAK", lastName: "Ground, 1st & 3rd Floor, Section 6, Kuching Town Land District (KTLD), Jalan Kulas, 93400 Kuching, Sarawak" },
{ firstName: "PEJABAT WILAYAH TERENGGANU", lastName: "Lot PT 3593, Ground, Mezzanine & 1st Floor, Jalan Sultan Zainal Abidin, 20000 Kuala Terengganu, Terengganu" },
{ firstName: "PEJABAT WILAYAH MELAKA", lastName: "No. 10, Jalan Melaka Raya 8, Taman Melaka Raya, 75000, Melaka. " },
]
}
});
这是我的模型:
Ext.define('List.model.President', {
extend: 'Ext.data.Model',
config: {
fields: ['firstName', 'middleInitial', 'lastName']
},
fullName: function() {
var d = this.data,
names = [
d.firstName,
(!d.middleInitial ? "" : d.middleInitial + "."),
d.lastName
];
return names.join(" ");
}
});
最后是我的控制器:
Ext.define('List.model.President', {
extend: 'Ext.data.Model',
config: {
fields: ['firstName', 'middleInitial', 'lastName']
},
fullName: function() {
var d = this.data,
names = [
d.firstName,
(!d.middleInitial ? "" : d.middleInitial + "."),
d.lastName
];
return names.join(" ");
}
});
我有我商店地址的确切坐标:第一个地址:纬度:4.600381 经度:101.094174 第二个地址:纬度:5.336649 经度:103.142497 第三个地址:纬度:2.184044 经度:102.25982
将等待答复,而我仍在自己研究以解决问题。我相信您的回复将帮助我并帮助许多其他有类似问题的人。谢谢
我的店铺:
Ext.define('List.store.Presidents', {
extend : 'Ext.data.Store',
config : {
model : 'List.model.President',
sorters : 'lastName',
grouper : function(record) {
return record.get('lastName')[0];
},
data : [{
firstName : "PEJABAT WILAYAH SARAWAK",
lastName : "Ground, 1st & 3rd Floor, Section 6, Kuching Town Land District (KTLD), Jalan Kulas, 93400 Kuching, Sarawak",
latitude : 4.600381 ,
longitude : 101.094174
}, {
firstName : "PEJABAT WILAYAH TERENGGANU",
lastName : "Lot PT 3593, Ground, Mezzanine & 1st Floor, Jalan Sultan Zainal Abidin, 20000 Kuala Terengganu, Terengganu",
latitude : 5.336649,
longitude : 103.142497
}, {
firstName : "PEJABAT WILAYAH MELAKA",
lastName : "No. 10, Jalan Melaka Raya 8, Taman Melaka Raya, 75000, Melaka. ",
latitude : 2.184044,
longitude : 102.25982
}]
}
});
我的控制器:
Ext.define('List.controller.Main', {
extend: 'Ext.app.Controller',
config: {
control: {
'presidentlist': {
disclose: 'showDetail'
},
}
},
showDetail: function(list, record) {
this.getMain().push({
xtype: 'presidentdetail',
title: record.fullName(),
listeners: {
maprender: function(component, map, geo, eOpts) {
var position = new google.maps.LatLng(2.184044,102.25982);
var marker = new google.maps.Marker({
position: position,
map: map
});
var infowindow = new google.maps.InfoWindow({
content: 'Working Fine <br /> I have been working On you',
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
setTimeout(function() {
map.panTo(position);
}, 1000);
},
},
})
},
});
我的模型:
Ext.define('List.model.President', {
extend : 'Ext.data.Model',
config : {
fields : ['firstName', 'middleInitial', 'lastName', 'latitude', 'longitude']
},
fullName : function() {
var d = this.data, names = [d.firstName, (!d.middleInitial ? "" : d.middleInitial + ".")];
return names.join(" ");
}
});
我的观点:
Ext.define('List.view.PresidentDetail', {
extend : 'Ext.Map',
xtype: 'presidentdetail',
config: {
title: 'Details',
styleHtmlContent: true,
scrollable: 'vertical',
//useCurrentLocation: true,
layout: 'fit',
mapOptions: {
//zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.DEFAULT
}
},
}
});
到目前为止,上面代码的结果和上面的Image一样,对于列表中的3个item,只能显示一个经纬度。我现在的问题是让它以这样一种方式工作,一旦用户点击列表中的任何项目,它将显示该特定地址的确切纬度和经度。请帮助我查看我的应用程序(控制器)中的逻辑。谢谢