создать пользовательскую функцию в SQLite Android? - PullRequest
5 голосов
/ 16 июля 2011

Я разрабатываю одно приложение, в котором мне нужно создать функцию sqlite для расстояния, у меня есть два поля широты и долготы в базе данных, и я хочу найти места поблизости, используя эту функцию, я разработал приложение в iPhone, я реализовалэта функция, используя sqlite3_create_function, вызывая функцию обратного вызова, которая даст мне расстояние.

Но проблема в том, что я не могу создать функцию в SQLITE с помощью Android. Кто-нибудь знает лучший способ получить близлежащие местоположенияиз sqlite с использованием android?

Другая проблема заключается в том, что SQLITE не поддерживает функции sin, cosine для вычисления расстояния между точками.

1 Ответ

0 голосов
/ 20 октября 2011

Привет, Джинеш ,

На мой взгляд, у вашей проблемы есть два основных решения.

1. Используйте javaScript для выполнения функций

Создайте необходимые функции в javaScript и используйте результат для обновления / запроса Sqlite.

JavaScript хорошо подходит для тригонометрии; синус, косинус и касательная. JavaScript может очень быстро вычислять сложные математические задачи.

Пример: вычисление ответа на следующую задачу

Сумма квадратов первых десяти натуральных чисел равна 1 ^ 2 + 2 ^ 2 + ... + 10 ^ 2 = 385. Квадрат суммы первых десяти натуральных чисел равен (1 + 2 + ... +> 10) ^ 2 = 55 ^ 2 = 3025. Отсюда разница между суммой квадратов из первых десяти> натуральных чисел и квадрат суммы равен 3025 - 385 = 2640. Найдите разницу> между суммой квадратов первых ста натуральных чисел и квадратом> суммы.

function Problem_6() {
    "use strict";
    var i = 1, ns = 0, sqs = 0;
    do {
        ns += i;
        sqs += i * i;
        i += 1;
    } while (i <= 100);
    return ns * ns - sqs;
}

Ответ: 25164150

Этот пример взят из Rolando Garza El blog de rolandog , основанного на его собственном расширении объекта Global Math javaScript; Math.js .

Ссылки:

Ссылки Mozilla на JavaScript для объекта Global Math:

Тригонометрия - синус, косинус и касательная с JavaScript, Дж. Дж. Гиффорд.

2. База данных GeoNames

GeoNames - это база данных с открытым исходным кодом, содержащая географическую информацию о большинстве стран, городов и деревень в мире, включая широту и долготу, а также расстояния до других географических местоположений.

GeoNames доступен как в виде веб-сервиса через JSON API, так и в виде загружаемых таблиц.

2.1 Запрос GeoNames через JSON API

Пример: поиск ближайшего пересечения для заданной широты / долготы

http://api.geonames.org/findNearestIntersectionOSMJSON?lat=37.451&lng=-122.18&username=demo

{"intersection":{"street2":"Curtis Street","street1":"Roble Avenue","distance":"0.08","highway2":"residential","highway1":"residential","lng":"-122.1808166","lat":"37.4506308"}}

2.2 Загрузка GeoNames

Хранить необходимую гео-информацию локально в Sqlite.

Дополнительная информация: http://www.geonames.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...