代码之家  ›  专栏  ›  技术社区  ›  imrhung

钛合金-创建屏幕后如何运行程序

  •  0
  • imrhung  · 技术社区  · 9 年前

    我正在尝试更新地图视图上的当前位置。我在控制器中获得当前位置:

    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
    });
    }
    

    但问题是,此时代码运行时,地图视图尚未创建,因此无法更新当前位置。 有人能提出一些解决这个问题的方法吗? 非常感谢。

    3 回复  |  直到 9 年前
        1
  •  0
  •   Liam MacDonald    9 年前

    您不是在同一控制器中创建地图吗?如果你只是将代码放在地图代码之后,但这很明显,所以我假设你已经想到了。

    创建地图时,为什么不将坐标设置为当前用户坐标?

    最坏的情况是,如果您想在500毫秒后调用updateCurrentLocation函数,则可以使用setTimer(,timer-ms)在设置的时间后调用函数。这并不理想。

        2
  •  0
  •   Aaron Saunders    9 年前

    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);
    }
    

    in map controller

    // 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
    });
    

    此处的完整解决方案 https://github.com/aaronksaunders/testInClass

        3
  •  0
  •   imrhung    9 年前

    最后,我发现地图视图上有一个事件调用“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