【问题标题】:Database / geolocation. Finding people nearby [closed]数据库/地理位置。寻找附近的人[关闭]
【发布时间】:2013-06-23 06:35:40
【问题描述】:

我目前正在尝试创建一个小型网络应用程序,它可以找到附近也在使用它的其他人。

当我使用地理定位功能时,我将用户的“最后已知位置”保存在服务器上大约一个小时,然后从数据库集合中删除该位置(我使用 MongoDb)

每次,我都会将位置与所有最近签到的人(位置集合中的人)进行比较,以找到接近的人。

虽然这种方法似乎效率不高,但人数可能很大,这意味着要迭代一长串名单并与不同国家的人比较职位。

我正在考虑为每个国家或时区划分为多个表。这会阻止应用搜索太远。

有什么建议或想法吗?

谢谢

【问题讨论】:

    标签: mongodb web geolocation location coordinates


    【解决方案1】:

    我会在这里使用 MongoDB 2.4 的地理空间支持。对于每个用户,以以下格式存储位置(它是 GeoJSON):

    {
        _id: ...,
        name: ...,
        last_known_location: { 
            "type": "Point",
            "coordinates": [ longitude, latitude ]
        }
    }
    

    并设置以下索引:

    db.location.ensureIndex( { last_known_location: "2dsphere" } );
    

    现在您可以使用以下查询非常轻松地搜索当前用户附近的所有人:

    db.location.find( {
        last_known_location: {
            $near: { 
                $geometry: { 
                    "type" : "Point", 
                    "coordinates" : [ -0.1485302, 51.5250157 ] 
                }
            }, 
            $maxDistance: 10 
        } 
    } );
    

    使用 $maxDistance,您可以控制“最近”用户可能距离提供的坐标多少米。

    【讨论】:

    • 效果很好,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2016-05-08
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多