Appcelerator - 获取地理位置信息并转换为URL

时间:2016-05-25 10:04:37

标签: ios geolocation appcelerator appcelerator-titanium

我仍然对appcelerator很新,但我试图用地理位置做一个小实验。我有一些类似于下面的代码,它将long和lat返回到控制台。我想要的是获取long和lat并将它们附加到URL,例如http://www.mywebsite.com/lat/long

我已经尝试创建一个简单的提醒来向我显示当前位置,但它只是警告:[对象GeolocationModule]。

有人能指出我正确的方向,所以我可以学到更多吗?谢谢

if (Ti.Geolocation.locationServicesEnabled) {
Titanium.Geolocation.purpose = 'Get Current Location';
Titanium.Geolocation.getCurrentPosition(function(e) {
    if (e.error) {
        Ti.API.error('Error: ' + e.error);
    } else {
        Ti.API.info(e.coords);
    }
});
} else {

    alert('Please enable location services');
}

1 个答案:

答案 0 :(得分:2)

这是您需要遵循API文档的方式:

您可以查看LocationResults页面:https://docs.appcelerator.com/platform/latest/#!/api/LocationResults,它会引导您到LocationCoordinates:https://docs.appcelerator.com/platform/latest/#!/api/LocationCoordinates

您可以看到,您可以使用e.coords.latitudelongitude来获取值。或者看一下控制台输出。它应该显示带有键值对的JSON输出。

获得值后,您可以创建HTTP请求(演示:https://docs.appcelerator.com/platform/latest/#!/guide/HTTPClient_and_the_Request_Lifecycle)并打开您的页面:

var url = "https://www.appcelerator.com/"+e.coords.longitude+"/"+e.coords.latitude;
var xhr = Ti.Network.createHTTPClient({
    onload: function(e) {
        // this function is called when data is returned from the server and available for use
        // this.responseText holds the raw text return of the message (used for text/JSON)
        // this.responseXML holds any returned XML (including SOAP)
        // this.responseData holds any returned binary data
        Ti.API.debug(this.responseText);
        alert('success');
    },
    onerror: function(e) {
        // this function is called when an error occurs, including a timeout
        Ti.API.debug(e.error);
        alert('error');
    },
    timeout:5000  /* in milliseconds */
});
xhr.open("GET", url);
xhr.send();  // request is actually sent with this statement

或者如果您打算使用更多请求,请查看RESTe(https://github.com/jasonkneen/RESTe),这是一个非常棒的库,可以轻松创建API请求