贝壳网的「画圈找房」 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
venomD
V2EX    程序员

贝壳网的「画圈找房」

  •  
  •   venomD 2023-06-02 10:51:58 +08:00 5366 次点击
    这是一个创建于 866 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想请教一下各位大佬,贝壳的这个「画圈找房」的功能是咋实现的?

    主要的问题是他是如何做到很快的响应的呢?房源信息与地图位置是怎么存放的?

    希望了解的大佬不吝赐教

    贝壳画圈找房

    23 条回复    2023-06-21 10:02:02 +08:00
    dem0ns
        1
    dem0ns  
       2023-06-02 10:57:18 +08:00
    resblockIds 按 block 来查
    chiron688
        2
    chiron688  
       2023-06-02 10:58:00 +08:00
    gis 开发,挺简单的,存个房源的 xy 或者经纬度坐标,然后识别路径的 xy 信息,在这范围内的就是了
    ww940521
        3
    ww940521  
       2023-06-02 10:59:07 +08:00
    我们公司的 GIS 也有这个功能,就是用的地图的 SDK 实现的,很简单。
    hhjswf
        4
    hhjswf  
       2023-06-02 10:59:21 +08:00 via Android
    redis 有个 geo 的数据类型
    j3llypunk777
        5
    j3llypunk777  
       2023-06-02 11:02:33 +08:00   1
    es polygon 查询,每个房源都有自己的经纬度数据,页面上的点聚合效果是地图自带的功能,我做过几乎一样的需求
    danieladu
        6
    danieladu  
       2023-06-02 11:07:23 +08:00
    盲猜就是 GEOHASH
    macttt
        7
    macttt  
       2023-06-02 11:45:40 +08:00
    开水团团有一篇基于 R-Tree 服务和 ElasticSearch 的 Terms 命令来实现的类似功能,他么针对这一步骤还对 ES 的 terms 进行了定制化增强: https://tech.meituan.com/2022/11/17/elasicsearch-optimization-practice-based-on-run-length-encoding.html
    shawndev
        8
    shawndev  
       2023-06-02 12:06:17 +08:00
    keyword: geo-polygon
    sadfQED2
        9
    sadfQED2  
       2023-06-02 13:47:35 +08:00 via Android
    es 传 polygon ,如果精度要求差一点可以 geohash
    WhereverYouGo
        10
    WhereverYouGo  
       2023-06-02 14:22:43 +08:00
    @j3llypunk777 #5 同 5 楼
    githmb
        11
    githmb  
       2023-06-02 15:01:48 +08:00
    这就不得不提 PostgreSQL 的牛逼之处了
    qiayue
        12
    qiayue  
    PRO
       2023-06-02 15:15:20 +08:00
    说个题外话,这个功能很好用,尤其是已经确定了学校的学区,只能在学区内换房时,特别好用
    ql562482472
        13
    ql562482472  
       2023-06-02 15:15:52 +08:00
    postgis 几个函数的事情 很容易
    Worldispow
        14
    Worldispow  
       2023-06-02 15:20:42 +08:00
    @githmb 数据分析做的多了就会发现,pg 真是吊着 mysql 锤
    leechen
        15
    leechen  
       2023-06-02 15:34:21 +08:00
    @githmb 这是懂的,PostgreSQL 内置了地理信息的数据格式和函数
    hldnpqzzy
        16
    hldnpqzzy  
       2023-06-02 16:37:04 +08:00
    geohash 吧
    qigge2014
        17
    qigge2014  
       2023-06-02 17:30:00 +08:00
    mysql ST_Distance_Sphere 函数也可以
    Ericcccccccc
        18
    Ericcccccccc  
       2023-06-02 17:32:58 +08:00
    搜 geohash, 然后数据放进 redis 就行.
    txy3000
        19
    txy3000  
       2023-06-02 17:46:21 +08:00
    kd 树 qlog(n)
    cp19890714
        20
    cp19890714  
       2023-06-02 19:39:21 +08:00 via Android
    postgre 可以处理 gis 相关数据,内置一堆 gis 函数和算法。比如:给出两点,算出最短路径,它都可以。
    LaurelHarmon
        21
    LaurelHarmon  
       2023-06-02 23:08:01 +08:00
    应该得用到图形学吧,判断一个区域是否在多边形内部
    LLaMA2
        22
    LLaMA2  
       2023-06-03 11:13:42 +08:00
    仔细阅读 GEOHASH 的原理,等读完了,发现还有很多现成的实现
    GEOHASH 存在很多年了
    Rain59
        23
    Rain59  
       2023-06-21 10:02:02 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5824 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:29 PVG 10:29 LAX 19:29 JFK 22:29
    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