诚信求教地图缓存的相关知识 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
main1234
V2EX    程序员

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

  •  
  •   main1234 2024-01-16 16:16:33 +08:00 2431 次点击
    这是一个创建于 680 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    15 条回复    2024-01-17 14:01:35 +08:00
    gadfly3173
        1
    gadfly3173  
       2024-01-16 16:28:33 +08:00 via Android   3
    Elissa
        2
    Elissa  
       2024-01-16 16:59:41 +08:00
    话说这不是前端相关的吗

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

    这个示例是通过查询鼠标点击位置处的正方形进行查询
    AutumnVerse
        5
    AutumnVerse  
       2024-01-16 20:52:14 +08:00
    纯算法的话 geohash ,Google S2

    工程实现的话
    ES GEO 查询
    Redis GeoHash 查询
    PG postgis
    rabbbit
        6
    rabbbit  
       2024-1-16 21:35:00 +08:00
    想问的是后端如何缓存已经查询过的店铺数据吧,例如某些热门地点频繁查数据库可能不太好。
    redis geo +postgis ?
    kuituosi
        7
    kuituosi  
       2024-01-16 23:13:59 +08:00
    楼上几位没有理解全题干,人家问的是缓存 geo 实现,不仅仅是问的 geo 查找
    其实里面有一些细节需要处理,毕竟 jd 也算是大厂了也要考虑高并发问题
    Maboroshii
        8
    Maboroshii  
       2024-01-17 00:27:40 +08:00 via Android
    视野范围内的关键建筑 id 作为索引,查找关联的店铺数据。 比如大型商场,小区。
    hapeman
        9
    hapeman  
       2024-01-17 09:34:52 +08:00
    redis 3.2 有一个数据类型是 GEO ,可以存储经纬度信息,并且也可以根据指定的经纬度信息获取指定范围内的信息集合,不知道可以不可以用于这个问题?
    AutumnVerse
        10
    AutumnVerse  
       2024-01-17 11:53:10 +08:00
    @kuituosi 缓存的话,直接用 Redis 的 Geo 查询,如果是自己手撸的话,用前缀树存储 GeoHash
    main1234
        11
    main1234  
    OP
       2024-01-17 13:53:17 +08:00
    看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        12
    main1234  
    OP
       2024-01-17 13:53:39 +08:00
    @rabbbit 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        13
    main1234  
    OP
       2024-01-17 13:54:09 +08:00
    @hapeman 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        14
    main1234  
    OP
       2024-01-17 13:54:23 +08:00
    @jiangwei2222 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    AutumnVerse
        15
    AutumnVerse  
       2024-01-17 14:01:35 +08:00 via Android
    @main1234 自己构建 GeoHash 索引呗,只要做过 gis 开发,都应该能说出 GeoHash
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5228 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:22 PVG 09:22 LAX 17:22 JFK 20:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86