具有动态经度和纬度的 Algolia 地理搜索 - 距离不正确

Algolia Geo-Search with dynamic Longitude and Latitude - distance not correct

我目前正在构建一个 website/web 应用程序,它将从 Algolia 中提取 "attractions" 数据然后显示它 - 本质上是一个非常简单的 search/filter 网络应用程序。

当用户找到他们想要的景点时,他们单击它并显示更多详细信息(描述、Google 地图位置、地址等)。 我想让它显示的一件事是附近的其他景点(半径 5 英里)。

现在,我对 Algolia 文档有了一定的了解,我发现可以使用 AlgoliaSearchHelper(参见:https://www.algolia.com/doc/guides/geo-search/geo-search-overview#filter-and-sort-around-a-location

长话短说,我已经设法让 Algolia 为我提供距某个点 5 英里半径范围内的景点,我的问题在于经度和纬度是手动输入的,而不是动态输入的(将被拉出)来自 Algolia 对象中的 _geoloc)。

我目前拥有的是:

var algoliaHelper = algoliasearchHelper(client, INDEX_NAME);
algoliaHelper.setQueryParameter('getRankingInfo', true);
algoliaHelper.setQueryParameter('aroundLatLng', '51.7664027,-0.4747815');
algoliaHelper.setQueryParameter('aroundRadius', 118047);
algoliaHelper.search();

(注:aroundRadius设置为118047是因为我在5miles范围内其实没有其他景点,这个只是为了测试阶段)

效果很好,它按距离顺序给出最近的景点并显示距离,因为我再次使用 Algolia 的文档生成了这个:

if (hit._rankingInfo.matchedGeoLocation) {
    hit.distance = '(' + parseInt(hit._rankingInfo.matchedGeoLocation.distance * 0.00062137, 10) + 'm)';
}

如果我尝试将其更改为动态条目(从景点的 _geoloc 数据中提取并转换为字符串,例如:

var test = String(content._geoloc.lat + "," + content._geoloc.lng);

var algoliaHelper = algoliasearchHelper(client, INDEX_NAME);
algoliaHelper.setQueryParameter('getRankingInfo', true);
algoliaHelper.setQueryParameter('aroundLatLng', test);
algoliaHelper.setQueryParameter('aroundRadius', 118047);
algoliaHelper.search();

结果仍然出现...但是距离为 0,当我 console.log() 我在 _rankingInfo 对象下看到的对象时,geoDistance 为 9,这表明它无法正常工作同样的数据是42073米

我的问题是,有没有一种方法可以使用我选择的景点的 _geoloc 详细信息动态地将其他景点拉到半径范围内(因为当我进入另一个景点时,它可能位于完全不同的位置,附近有不同的景点).

我很感激我能得到的任何帮助,我不会对我的 JS 知识存在巨大差距感到震惊,这是非常明显的。

提前致谢。

好吧,经过大量时间删除和更新代码后,上面的代码似乎可以完美运行。主要问题是我的对象来自 Algolia,我没有注意到。

恐怕挫败感和盯着同一个代码看得太久让我对这个代码视而不见。