【问题标题】:create user defined function in sqlite android?在sqlite android中创建用户定义的函数?
【发布时间】:2011-07-16 10:41:53
【问题描述】:

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

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

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

【问题讨论】:

标签: android sqlite


【解决方案1】:

你好 Jignesh

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

1。使用 javaScript 执行功能

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

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

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

前十个自然数的平方和是,1^2 + 2^2 +... + 10^2 = 385。前十个自然数之和的平方是,(1 + 2 + ... + >10)^2 = 55^2 = 3025。因此平方和之间的差前 10 个自然数的平方和的平方为 3025 – 385 = 2640。求前 100 个自然数的平方和与 > 和的平方之间的差。

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 的 Global Math Object 的扩展; 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 作为网络服务使用,也可以作为可下载的表格使用。

2.1 Query GeoNames through JSON API

示例:查找给定纬度/经度的最近交点

http://api.geonames.org/findNearestIntersectionOSMJSON?lat=37.451&amp;lng=-122.18&amp;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/

【讨论】:

  • 如何在我的 sqlite 查询中使用 javascript 结果?
猜你喜欢
  • 2011-12-13
  • 1970-01-01
  • 2010-10-02
  • 2011-01-07
  • 2019-08-16
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多