诚信求教地图缓存的相关知识

113 天前
 main1234

是 N 多年前京东后端开发的 3 面面试题:

有一个平面地图,可以理解成高德地图、百度地图这种效果,当前所在经纬为 X 和 Y ,以 X 和 Y 为圆点可以查看当前地图范围内的店铺,可以拖动地图改变当前所在经纬,经纬改变后当前范围内的店铺也会改变

请设计一个店铺缓存系统实现上述功能

1676 次点击
所在节点    程序员
15 条回复
gadfly3173
113 天前
Elissa
113 天前
话说这不是前端相关的吗

arcgis 用户,arcgis for js 中有个视口对象 view ,view 可以监听拖动、缩放事件,回调函数会返回视口范围 extent ,extent 和点、线、面一样属于 geometry ,可以将 extent 作为条件 new 一个 query 对象,通过图层查询传入查询条件 query ,实现仅查询视口范围内的要素
shinsekai
113 天前
用 kdtree 解决,不知道是不是正确答案。
Elissa
113 天前
https://developers.arcgis.com/javascript/latest/sample-code/highlight-features-by-geometry/

这个示例是通过查询鼠标点击位置处的正方形进行查询
jiangwei2222
113 天前
纯算法的话 geohash ,Google S2

工程实现的话
ES GEO 查询
Redis GeoHash 查询
PG postgis
rabbbit
113 天前
想问的是后端如何缓存已经查询过的店铺数据吧,例如某些热门地点频繁查数据库可能不太好。
redis geo +postgis ?
kuituosi
113 天前
楼上几位没有理解全题干,人家问的是缓存 geo 实现,不仅仅是问的 geo 查找
其实里面有一些细节需要处理,毕竟 jd 也算是大厂了也要考虑高并发问题
Maboroshii
113 天前
视野范围内的关键建筑 id 作为索引,查找关联的店铺数据。 比如大型商场,小区。
hapeman
113 天前
redis 3.2 有一个数据类型是 GEO ,可以存储经纬度信息,并且也可以根据指定的经纬度信息获取指定范围内的信息集合,不知道可以不可以用于这个问题?
jiangwei2222
113 天前
@kuituosi 缓存的话,直接用 Redis 的 Geo 查询,如果是自己手撸的话,用前缀树存储 GeoHash
main1234
113 天前
看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
main1234
113 天前
@rabbbit 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
main1234
113 天前
@hapeman 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
main1234
113 天前
@jiangwei2222 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
jiangwei2222
113 天前
@main1234 自己构建 GeoHash 索引呗,只要做过 gis 开发,都应该能说出 GeoHash

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1009104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX