- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试查找附近的地点。下面的代码工作正常。但是我无法根据给定的纬度、经度获得实际的位置距离。
Criteria criteria = new Criteria("coordinates")
.near(new Point(searchRequest.getLat(),searchRequest.getLng()));
Query query = new Query();
query.addCriteria(criteria);
query.addCriteria(criteriaName);
query.limit(5);
List<Place> ls = (List<Place>) mongoTemplate.find(query, Place.class);
最佳答案
您可以使用 geoNear aggregation 来完成.在 spring-data-mongodb GeoNearOperation代表这个聚合。
扩展或创建继承 Place
类,其中包含您想要距离信息的字段(继承示例):
public class PlaceWithDistance extends Place {
private double distance;
public double getDistance() {
return distance;
}
public void setDistance(final double distance) {
this.distance = distance;
}
}
使用聚合代替 Criteria
和 Query
。 geoNear
的第二个参数是应该设置距离的字段的名称:
final NearQuery nearQuery = NearQuery
.near(new Point(searchRequest.getLat(), searchRequest.getLng()));
nearQuery.num(5);
nearQuery.spherical(true); // if using 2dsphere index, otherwise delete or set false
// "distance" argument is name of field for distance
final Aggregation a = newAggregation(geoNear(nearQuery, "distance"));
final AggregationResults<PlaceWithDistance> results =
mongoTemplate.aggregate(a, Place.class, PlaceWithDistance.class);
// results.forEach(System.out::println);
List<PlaceWithDistance> ls = results.getMappedResults();
只是为了让它更容易 - 关联导入:
import static org.springframework.data.mongodb.core.aggregation.Aggregation.geoNear;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.aggregation.GeoNearOperation;
import org.springframework.data.mongodb.core.query.NearQuery;
关于spring - 如何获取距离 - MongoDB Template Near 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32795980/
我有一个非常简单的 SQL 语句 SELECT * FROM Table; 但是,我的查询引擎返回一个语法错误。为什么? 错误详情: An unhandled exception of type 'S
从以下位置运行练习:/starter--near-sdk-as产量 ... NEAR CLI 有可用的小更新 2.1.1 → 2.2.0 ││ 运行 yarn add near-cli 以避免意外行为
我需要以编程方式获取 NEAR 区 block 链中抵押的 NEAR 代币总数,就像 NEAR 浏览器中显示的那样 (https://explorer.near.org/nodes/validator
使用近钱包 URL 登录后,用户可以在区 block 链上进行任意数量的交易,而无需每次都征求许可(这与使用元掩码不同)。如果应用程序在未经用户许可的情况下进行未经授权的交易,比如盗用用户的所有资金怎
目前正在阅读文档并尝试想出一个工作示例来创建一个新帐户,JsonRpcProvider 有一些问题 - 想在这里发布完整的示例,因为我认为它对任何人都有用搜索者 const keyStore = ne
我正在开发一个网络应用程序,并希望使用 near 按钮登录以通过网络钱包连接到网络,这样我的用户就可以调用网络中的合约。我找到了 https://corgis.near.org/ 上托管的 corgi
我正在为一个多币种钱包的后端工作,我已经使用 near-api-js 提供了对 NEAR 协议(protocol)的支持,但我仍然坚持为主网网络设置一个帮助程序 url。我最初使用 https://h
我创建了一个 Hazelcast 设置,其中一个节点运行 hazelcast 实例。我的客户端应用程序使用客户端配置从 Hazelcast 实例读取缓存。我想在我的客户端应用程序中实现 Near 缓存
在 Rust 中,我们在标准库中有许多可用的数据结构。 NEAR 协议(protocol)在 near-api-rs 中有一些优化的数据结构,但主要区别是什么? 最佳答案 Evgeny Kuzyako
任何人都可以帮助我处理涉及值(value)/接近的交易/操作类型。我见过多种操作类型,如转移,绘制等 最佳答案 NEAR 协议(protocol)中只有 7 种原生 Action 类型: 转账(存款从
一些从存储设备生成的公钥是 ed25519: 前缀后的 44 个字符(总共 52 个),有些是 43 个字符(总共 51 个)。这是允许的吗? ed25519: 是否需要在使用公钥时包含前缀? 最佳答
我想检查一个浮点值是否“接近”32 的倍数。例如64.1“几乎”可以被 32 整除,63.9 也是如此。 现在我正在这样做: #define NEARLY_DIVISIBLE 0.1f float o
如何在合约之间的异步调用链中捕获和处理异常? 假设我的事务发起了以下调用: contractA.run() -> do changes in contractA -> calls contra
我想要一个 MySQL 查询: 要显示“接近”的重复行,请使用:引用和相同的引用 + 模式“-??” (“-”和 2 个字符,“?”是一个随机字符)。 带有 id、reference 的表的示例: i
我正在尝试从嵌套的mongodb文档中找到最接近的编码。我不断收到的错误如下: 我已经尽力想了一切。我试图添加索引2d,但这两个都不起作用。 var point = GeoJson.Point(Geo
按我要返回的文档中的属性进行过滤时遇到问题...甚至不知道如何表达这个问题。例如: 我正在开发一个系统,如果附近有工作弹出,用户会收到警报。该用户定义如下: var user = new Schema
将 $near 与 mongodb 结合使用,按距离返回结果。有没有办法知道(或指定)距离匹配时的排序顺序? 例如,如果我请求 10 个文档并且它们的距离都相同,然后请求另外 10 个文档并且它们与第
我有一个类似的收藏 { "_class" : "User", "_id" : "id1", "places" : [ {
我正在尝试测试帐户的 NEAR 余额是否增加和减少。env::account_balance() 即使有 attached_deposit 似乎也没有改变。 #[test] fn takes_acco
我正在尝试学习如何允许 1 个帐户(“捐赠匹配器”)将资金存入第二个帐户( this contract ,作为“托管”帐户),第三个帐户(常规“捐助者”)然后被允许触发发送到第四个帐户(“收件人”,例
我是一名优秀的程序员,十分优秀!