2012-11-28 25 views
1

我有一個移動應用程序,我想使用地理位置。 我的問題是,我不明白如何將經緯度分配給Application.js中的某個屬性,以便我可以將其他頁面綁定到它。在QooxDoo移動中使用GeoLocation GeoPosition

當我將位置綁定到Application.js中的latLon屬性時,得到: 004930聲明錯誤!位置不是qx.bom.GeoLocation [99-0]上的數據(qx.event.type.Data)事件:預期'qx.event.type.Data',但找到'qx.event.type.GeoPosition'!

我嘗試了一些變化,但我不能綁定到屬性。

我得到了它到目前爲止,我可以調試地點工作:

var loginPage = new sgmobile.page.Login(); 
    manager.addDetail(loginPage); 

    loginPage.addListener("appear", function(evvt) { 
    this.__getPosition(); 
    }, this); 

    loginPage.show(); 

................ 

__getPosition : function() { 
    var geoLocation = qx.bom.GeoLocation.getInstance(); 
    var pos = geoLocation.getCurrentPosition(); 
    geoLocation.addListener("position", this.__applyPosition); 
}, 

__applyPosition : function(position) { 
    this.latlon = { 
    "lat" : position.getLatitude(), 
    "lon" : position.getLongitude() 
    } 
    this.debug("latlon: " + qx.lang.Json.stringify(this.latlon)); 
}, 

我也複製了郵件列表。

此致 亞歷

+0

從郵件列表交叉後: http://qooxdoo.678.n2.nabble.com/GeoPosition-td7582147.html;cid=1354112277752-668 –

回答

3

數據綁定需要數據事件是可綁定。由於GeoLocation事件不是數據事件,因此默認情況下不可綁定。如果你想要綁定,我會建議將屬性添加到你想要綁定的應用程序中,並使用事件監聽器手動將這些屬性與地理位置事件連接起來。

1

在我看到Martin的回答之前,我找到了自己想要分享的解決方案。它看起來效率不高,但使用對象作爲屬性我無法獲得輸入綁定到屬性的屬性。閱讀馬丁的回答,我走了正確的道路。

希望這有助於其他qooxdoo移動newby。

我改變了的application.js到:

lat: { 
    check : "Number", 
    nullable : true, 
    init : null, 
    event : "changeLat" 
}, 
lon: { 
    check : "Number", 
    nullable : true, 
    init : null, 
    event : "changeLon" 
}, 

__applyPosition : function(positionEvent) { 
    this.debug("lat: " + positionEvent.getLatitude() + " lon: " + positionEvent.getLongitude()); 
    this.setLat(positionEvent.getLatitude()); 
    this.setLon(positionEvent.getLongitude()); 
}, 

和我結合在reportPage這樣的「緯度」和「經度」屬性以相應的:

this.bind("lon", reportPage, "lon"); 
    this.bind("lat", reportPage, "lat"); 

爲了完整;在衛浴套間reportPage代碼:

var lat = new qx.ui.mobile.form.NumberField(); 
    lat.setEnabled(false); 
    form.add(lat, "latitude"); 

    var lon = new qx.ui.mobile.form.NumberField(); 
    lon.setEnabled(false); 
    form.add(lon, "longtitude"); 

    this.bind('lat', lat, 'value'); 
    this.bind('lon', lon, 'value'); 

    .............. 
properties: { 
    lat: { 
    check : "Number", 
    nullable : true, 
    init : null, 
    event : "changeLat" 
    }, 
    lon: { 
    check : "Number", 
    nullable : true, 
    init : null, 
    event : "changeLon" 
    } 
}