首页 > 解决方案 > DynamoDB 在 Android Kotlin 中使用数学函数查询地理位置

问题描述

我正在使用 Kotlin 开发一个用于学习目的的 Android 应用程序。我使用 DynamoDB 作为后端。我也是新手。我知道如何使用 AWS Android SDK 从 Android Kotlin 中的表中查询记录。我从这样的表中获取所有记录。

val dynamoDBClient = AmazonDynamoDBClient(AWSMobileClient.getInstance().credentialsProvider)
            val fetchedItems: ArrayList<Any> = ArrayList();

            val scanRequest = ScanRequest().withTableName(MainApplication.DB_TABLE_ITEMS);
            scanRequest.exclusiveStartKey = lastEvaluatedKey


            val scanResult = dynamoDBClient.scan(scanRequest)
            scanResult.items.forEach { item ->
                val viewItem = ItemDO()
                viewItem.id = item.get("Id")?.s
    item.get("Images")?.ns?.size.toString())
            }

但是我现在要做的是我想在表中添加两个新字段,称为纬度和经度。然后根据查询中传入的参数location查询得到最近位置的记录。为此,我必须在查询中使用数学函数,如 sin() 和 cos() 等。我怎样才能使用这些数学函数?然后我找到了另一个名为 CloudSearch 的 AWS 服务来搜索地理位置。在文档中,它说它可以用于索引和搜索 DynamoDB 中的记录。但是没有教程或文档供 Android 使用该 CloudSearch 服务来查询 DynamoDB 中的地理位置数据。也没有 Android SDK。我在哪里可以找到适合我的场景的不错的教程或文档?

我看了下面的文章,但是 Android 的 SDK 在哪里?下面的文章有 Android SDK 吗?

https://aws.amazon.com/blogs/mobile/geo-library-for-amazon-dynamodb-part-1-table-structure/

标签: androidkotlinamazon-dynamodbamazon-cloudsearch

解决方案


我还没有找到解决方案。但这就是我想要做的。我会将 AWS lambda 挂钩到我的 DynamoDB。添加项目后,我会将该项目发送到 ElasticSearch 或 Algolia。与 Elasticsearch 或 Algolia 同步数据的逻辑将在 Lambda 函数中。然后我将使用 Algolia 或 Elastic Search 搜索/查询地理位置数据。


推荐阅读