Хобрук: Ваш путь к мастерству в программировании

Appcelerator — получение информации о геолокации и преобразование в URL

Я все еще очень новичок в appcelerator, но я пытаюсь провести небольшой эксперимент с геолокацией. У меня есть код, похожий на приведенный ниже, который возвращает длину и ширину на консоль. Я хотел бы получить длинный и лат и добавить их к 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

Вот как вам нужно следовать документации API:

Вы можете просмотреть страницу LocationResults: https://docs.appcelerator.com/platform/latest/#!/api/LocationResults, который приведет вас к LocationCoordinates: https://docs.appcelerator.com/platform/latest/#!/api/LocationCoordinates

Там вы можете видеть, что вы можете использовать e.coords.latitude или longitude для получения значений. Или посмотрите на вывод консоли. Он должен показать вам вывод 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.

25.05.2016
  • Большое спасибо, это очень помогло. Мне удалось создать переменную в функции определения местоположения, которая выводит предупреждение с нужным мне URL-адресом, а широта/долгота вставлены в нужное место. Есть ли способ получить доступ к этой переменной извне функции? Мне нужно использовать его для загрузки веб-просмотра. Я пытался использовать имя переменной Ti.App.myvariable, но это не работает вне функции. 25.05.2016
  • Конечно, вы можете создать переменную вне функции (выше строки 1) и установить ее внутри getcurrentposition. Или вызовите функцию, которая находится снаружи, как эта callURL(long,lat), и поместите материал xhr внутри function callURL(long, lat){} 25.05.2016
  • Спасибо, я не уверен, что понимаю вас на 100%, извините. Как мне установить переменную в getcurrentposition? Я пробовал разные способы, и ни один из них не работает. 25.05.2016
  • Это основная проблема с javascript, не связанная с ti. См. что-то вроде этого: w3schools.com/js/js_scope.asp (глобальная область) Вы просто назначаете переменную и объявляете ее вне функции. 25.05.2016
  • вижу спасибо. Не могли бы вы немного подробнее объяснить, как поместить xhr в функцию? Вы имеете в виду часть xhr.open? 26.05.2016
  • см. решение в другом потоке: stackoverflow.com/a/37468392/5193915 Но опять же: некоторые основы кода отсутствуют . Так что было бы лучше получить больше основ в javascript или начать с более простого проекта приложения, пока у вас не будет базовой настройки, а затем работать с вызовами gps и API. Удачи и, возможно, присоединяйтесь к группе ti-slack для быстрой помощи. 28.05.2016
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..