在sqlite android中创建用户定义的函数?

时间:2011-07-16 10:41:54

标签: android sqlite

我正在开发一个应用程序,我需要为距离创建sqlite函数,我在数据库中有两个字段的纬度和经度,我想找到附近使用该函数的位置,我已经在iPhone中开发了应用程序,我已经实现了通过调用回调函数使用sqlite3_create_function来实现此功能,这将为我提供距离。

但问题是:我无法使用android在SQLITE中创建函数,有没有人知道使用android从sqlite获取附近位置的更好方法?

另一个问题是SQLITE不支持sin,余弦函数来计算点之间的距离。

1 个答案:

答案 0 :(得分:-3)

Hello Jignesh

在我看来,你的问题基本上有两种解决方案。

1。使用javaScript执行函数

在javaScript中创建必要的函数,并使用结果更新/查询Sqlite。

JavaScript非常适合三角学;正弦,余弦和正切。 JavaScript可以非常快速地计算高级数学问题。

示例:计算以下问题的答案

  

前十个自然数的平方和是1 ^ 2 + 2 ^ 2 + ......   + 10 ^ 2 = 385.前十个自然数之和的平方为,(1 + 2 + ... +> 10)^ 2 = 55 ^ 2 = 3025.因此,总和之间的差值为前十个>自然数的平方和和的平方是3025-385 = 2640.求出前100个自然数的平方和与>&的平方之间的差值> / p>

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,基于他自己对javaScript全局数学对象的扩展; Math.js

参考文献:

Mozilla’s JavaScript References for the Global Math Object:

Trigonometry—sine, cosine and tangent with JavaScript, by JJ Gifford.

2. GeoNames Database

GeoNames是一个开源数据库,涵盖了世界上大多数国家,城市和村庄的地理信息,包括纬度和经度以及与其他地理位置的距离。

GeoNames既可以通过JSON API作为Web服务,也可以作为可下载的表使用。

2.1 Query GeoNames through 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 Downloading GeoNames

在Sqlite中本地存储所需的地理信息。

更多信息:http://www.geonames.org/