如何从 Ti.Geolocation.getCurrentPosition 访问/存储纬度和经度?

Posted

技术标签:

【中文标题】如何从 Ti.Geolocation.getCurrentPosition 访问/存储纬度和经度?【英文标题】:How do I access/store latitude and longitude from Ti.Geolocation.getCurrentPosition? 【发布时间】:2015-02-22 20:30:38 【问题描述】:

我正在使用 Titanium Studio (3.4.1) 并为 iosandroid 编写 javascript

我正在尝试获取设备的纬度和经度并将其返回给一个函数,以便我可以在另一个模块中调用该函数并将其传递给另一个函数。

这是 geo.js,在里面我正在加载 Ti.Geolocation.getCurrentPosition 并尝试将纬度返回给函数 getLat()。然后,通过导出使其可用于 app.js。

exports.getLat = function()
Ti.Geolocation.getCurrentPosition(function(e) 
    console.log(e);
    timeout : 10000;
    return JSON.stringify(e.coords.latitude);
);
;

这是 app.js,它会检查应用程序正在运行的平台。它看到它是一部 iPhone,然后需要 geo.getLat()。之后,我想将纬度存储到变量 lat 中,稍后将其作为参数提供给另一个函数,例如 getWdata(lat);

if (Ti.Platform.osname === 'android') 
    console.log('android version\n');
    var geo = require('geo');
    var lat = geo.getLat(0);
    var lng = geo.getLng(0);
    console.log('Android Coordinates: ' + lat, lng);    
        

else if (Ti.Platform.osname === 'iphone' || 'ipad')
    console.log('iOS version\n');
    var geo = require('geo');
    var lat = geo.getLat();
    geo.getLat();
    console.log('iOS Coordinates: ' + lat);
        

【问题讨论】:

【参考方案1】:

您将需要使用回调来完成此任务。简单的过程是传递一个函数(称为回调)作为参数,而不是使用return;调用回调函数。

此外,您不需要调用两种方法来获取纬度/经度,因为它可以只使用一种方法来完成。

下面的例子:

在 geo.js 中:

exports.getLatLong = function(callback)
    Ti.Geolocation.getCurrentPosition(function(e) 
        if (e.success) 
            Ti.API.info("Cords latitude" + e.coords.latitude);
            Ti.API.info("Cords longitude" + e.coords.longitude);
            callback(e.coords.latitude, e.coords.longitude);
         else 
            alert("Unable to fetch cords");
        
    );
;

现在在 app.js 中,调用 getLatLong 函数为:

var geo = require('geo'), lat = 0, long = 0;
geo.getLatLong(function(latitude,longitude) 
    lat = latitude;
    long = longitude;
);

注意:使用Ti.API.info 而不是console.log

【讨论】:

那么为什么要使用 Ti.API.info 而不是 console.log?他们不做同样的事情吗? console.log 没有得到钛人的官方支持,它现在可能可以工作,但将来可能不会。【参考方案2】:

用途:

Titanium.Geolocation.getCurrentPosition(function(e) 
    if (e.success) 
        Ti.API.info("Cords longitude" + e.coords.longitude);
        Ti.API.info("Cords latitude" + e.coords.latitude);
    
);

【讨论】:

以上是关于如何从 Ti.Geolocation.getCurrentPosition 访问/存储纬度和经度?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?