我使用Cordova API捕获地理位置,然后成功,我在Google地图上渲染当前位置。
当我第一次使用get_position时,我按如下方式渲染表单:
var geo_panel = new Ext.form.Panel({
useCurrentLocation: true,
fullscreen: true,
layout: 'fit',
items: obj
});
其中obj是定义为
的工具栏toolbar = Ext.create('Ext.Toolbar', {
docked: 'top',
alias : 'widget.geolocationToolbar',
ui: 'light',
defaults: {
iconMask: true
},
items: [
{
xtype: 'button',
ui: 'back',
text: 'Back',
// destroy form.Panel overlay and return to tree store view
handler: function() {
geo_panel.destroy();
}
},
{
xtype: 'button',
itemId: 'stopWatch',
text: 'StopWatch',
iconCls: 'arrow_right',
iconMask: true,
handler: function() {
EvaluateIt.utils.UtilityService.clear_watch();
}
},
{
xtype: 'selectfield',
itemId: 'accuracy',
autoSelect: false,
placeHolder: 'accuracy',
options: [
{text: ''},
{text: 'high', value: 5},
{text: 'med high', value: 10},
{text: 'medium', value: 15},
{text: 'med low', value: 20},
{text: 'low', value: 66}
],
listeners: {
change: function(field, value) {
if (value instanceof Ext.data.Model) {
value = value.get(field.getValueField());
}
console.log(value);
// set accuracy as config variable
EvaluateIt.config.accuracy = value;
}
}
},
{
iconCls: 'home',
handler: function() {
google_map.getMap().panTo(position);
}
}
]
});
这在我的表单面板中渲染得很好。
我的onSuccess方法然后传递一个参数,将google_map添加到geo_panel表单面板。 我已经尝试过geo_panel.add(工具栏,google_map),这有效,但是当我点击" Back"上面工具栏中的按钮:
{
xtype: 'button',
ui: 'back',
text: 'Back',
// destroy form.Panel overlay and return to tree store view
handler: function() {
geo_panel.destroy();
}
},
我必须点击两次:第一次销毁google_map,然后第二次销毁工具栏。这是一种非常不良的行为。我已经尝试销毁geo_panel中的每个项目,但这会做其他奇怪的事情。这就像有多个geo_panel实例。有什么想法吗?
答案 0 :(得分:0)
我明白了:我正在创建我的geo_panel的两个实例。我重构了代码,现在一切都按照需要运行。