Titanium Alloy - 创建屏幕后如何 运行 程序
Titanium Alloy - How to run procedure after screen created
我正在尝试更新地图视图中的当前位置。我得到控制器中的当前位置:
var updateCurrentLocation = function updateCurrentLocation(e){
Ti.API.info("Update current location on map");
$.map.setLocation({
latitude: e.coords.latitude,
longitude: e.coords.longitude,
latitudeDelta: 1,
longitudeDelta: 1
});
}
但是问题是此时代码运行,地图视图还没有创建,所以不能更新当前位置。
任何人都可以建议一些技术来解决这个问题吗?
谢谢!
您不是在同一控制器中创建地图吗?如果您只是将代码放在地图代码之后,但这是显而易见的,所以我假设您已经想到了这一点。
为什么在创建地图时不将坐标设置为当前用户坐标?
最坏的情况,如果你想在 500 毫秒后调用 updateCurrentLocation 函数,你可以使用 setTimer(, timer ms) 在设定的时间后调用函数。这并不理想。
starting up the map controller
function showMap() {
// create the new controller and pass in the
// model object as an argument 'item'
var ctrl = Alloy.createController('MapView', {
'item' : args.item // <-- pass is information + coords for map
});
setTimeout(function() {
args.photoListTab.open(ctrl.mainWindow);
}, 200);
}
// get the photo object from the parameters
var coords = args.item.custom_fields.coordinates[0];
var locationString = args.item.custom_fields.location_address;
// create annotation
var annotation = Alloy.Globals.Map.createAnnotation({
latitude : Number(coords[1]),
longitude : Number(coords[0]),
title : args.item.custom_fields.location_string,
myid : args.item.id
});
最后我发现地图视图上有一个事件调用 "complete"。因此,要在地图加载后执行您希望发生的任何事情,请在地图控制器中使用:
$.map.addEventListener('complete', function(e) {
Ti.API.info("Map controller: on Map complete");
$.trigger('complete', e); // Trigger event for other controller can listen too.
// And you can do other logic here.
});
引用自Titanium Doc
我正在尝试更新地图视图中的当前位置。我得到控制器中的当前位置:
var updateCurrentLocation = function updateCurrentLocation(e){
Ti.API.info("Update current location on map");
$.map.setLocation({
latitude: e.coords.latitude,
longitude: e.coords.longitude,
latitudeDelta: 1,
longitudeDelta: 1
});
}
但是问题是此时代码运行,地图视图还没有创建,所以不能更新当前位置。 任何人都可以建议一些技术来解决这个问题吗? 谢谢!
您不是在同一控制器中创建地图吗?如果您只是将代码放在地图代码之后,但这是显而易见的,所以我假设您已经想到了这一点。
为什么在创建地图时不将坐标设置为当前用户坐标?
最坏的情况,如果你想在 500 毫秒后调用 updateCurrentLocation 函数,你可以使用 setTimer(, timer ms) 在设定的时间后调用函数。这并不理想。
starting up the map controller
function showMap() {
// create the new controller and pass in the
// model object as an argument 'item'
var ctrl = Alloy.createController('MapView', {
'item' : args.item // <-- pass is information + coords for map
});
setTimeout(function() {
args.photoListTab.open(ctrl.mainWindow);
}, 200);
}
// get the photo object from the parameters
var coords = args.item.custom_fields.coordinates[0];
var locationString = args.item.custom_fields.location_address;
// create annotation
var annotation = Alloy.Globals.Map.createAnnotation({
latitude : Number(coords[1]),
longitude : Number(coords[0]),
title : args.item.custom_fields.location_string,
myid : args.item.id
});
最后我发现地图视图上有一个事件调用 "complete"。因此,要在地图加载后执行您希望发生的任何事情,请在地图控制器中使用:
$.map.addEventListener('complete', function(e) {
Ti.API.info("Map controller: on Map complete");
$.trigger('complete', e); // Trigger event for other controller can listen too.
// And you can do other logic here.
});
引用自Titanium Doc