V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
main1234
V2EX  ›  程序员

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

  •  
  •   main1234 · 310 天前 · 1923 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    15 条回复    2024-01-17 14:01:35 +08:00
    gadfly3173
        1
    gadfly3173  
       310 天前 via Android   ❤️ 3
    Elissa
        2
    Elissa  
       310 天前
    话说这不是前端相关的吗

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

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

    工程实现的话
    ES GEO 查询
    Redis GeoHash 查询
    PG postgis
    rabbbit
        6
    rabbbit  
       310 天前
    想问的是后端如何缓存已经查询过的店铺数据吧,例如某些热门地点频繁查数据库可能不太好。
    redis geo +postgis ?
    kuituosi
        7
    kuituosi  
       310 天前
    楼上几位没有理解全题干,人家问的是缓存 geo 实现,不仅仅是问的 geo 查找
    其实里面有一些细节需要处理,毕竟 jd 也算是大厂了也要考虑高并发问题
    Maboroshii
        8
    Maboroshii  
       309 天前 via Android
    视野范围内的关键建筑 id 作为索引,查找关联的店铺数据。 比如大型商场,小区。
    hapeman
        9
    hapeman  
       309 天前
    redis 3.2 有一个数据类型是 GEO ,可以存储经纬度信息,并且也可以根据指定的经纬度信息获取指定范围内的信息集合,不知道可以不可以用于这个问题?
    jiangwei2222
        10
    jiangwei2222  
       309 天前
    @kuituosi 缓存的话,直接用 Redis 的 Geo 查询,如果是自己手撸的话,用前缀树存储 GeoHash
    main1234
        11
    main1234  
    OP
       309 天前
    看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        12
    main1234  
    OP
       309 天前
    @rabbbit 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        13
    main1234  
    OP
       309 天前
    @hapeman 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    main1234
        14
    main1234  
    OP
       309 天前
    @jiangwei2222 看了回复我想起来了,面试时候我第一时间说了 redis geo ,面试官直接否了,说不能用这个,原话是"如果没有 redis geo ,那我这个需求还做不了了",直接给我整懵了
    jiangwei2222
        15
    jiangwei2222  
       309 天前 via Android
    @main1234 自己构建 GeoHash 索引呗,只要做过 gis 开发,都应该能说出 GeoHash
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:06 · PVG 00:06 · LAX 08:06 · JFK 11:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.