我目前正在构建一个网站/网络应用程序,它将从Algolia中提取“吸引力”数据,然后显示它 - 本质上是一个非常简单的搜索/过滤网络应用程序。
当用户找到他们想要的景点时,他们点击它并显示更多细节(描述,谷歌地图位置,地址等)。 我想要展示的一件事是附近的其他景点(半径5英里)。
现在,我已经在Algolia docs上发现了这一点,我发现使用AlgoliaSearchHelper可以实现这一点(参见:https://www.algolia.com/doc/guides/geo-search/geo-search-overview#filter-and-sort-around-a-location)
长话短说,我已经设法让Algolia从一个点向我提供半径5英里的景点,我的问题在于经度和纬度是手动输入而不是动态(将从_geoloc拉出来)在Algolia对象中)。
我目前拥有的是:
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,因为我实际上在5英里内没有任何其他景点,这仅用于在舞台上进行测试)
这很好用,它给了我距离最近的距离并显示距离,因为我再次使用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知识存在巨大差距,这是非常明显的。
提前致谢。
答案 0 :(得分:1)
好吧,经过大量时间删除和更新代码后,上面的代码似乎完美无缺。主要问题是我的对象来自Algolia,我没有注意到。
我害怕沮丧与盯着相同的代码混合在一起太长时间使我失明了。