- 精华
- 0
- 帖子
- 111
- 威望
- 0 点
- 积分
- 129 点
- 种子
- 5 点
- 注册时间
- 2011-1-31
- 最后登录
- 2019-10-28
|
本帖最后由 Tobar 于 2011-12-31 16:40 编辑
中午跑到广州仑头去吃饭,一个比较偏的地方,发现near无法获取当前位置,当时插着3g卡,信号也是满格
回想之前几天near的结果,加上论坛上部分玩家说无论如何无法定位的帖子
做一些简单的猜测.
猜测之前做一些合理的假设
1.Sony的near位置是有一定覆盖面积的,比如将地图化为5km*5km的网格,每个网格作为一个区域.不可能每个经纬度都分别统计,Sony无法承载如此大的数据量和统计量,网格太小对"该区域游戏排名"功能也意义不大
2.每个网格中以一条街名表示,该街名并不是预先设定好的,无此必要,工作量也很大.至于如何选择的街名,之后会说明.
3.联系以上两点,该网格大小可能可以动态重新划分大小,比如某地点太热门,2km之内有几千万家,于是划分为更小的方格,500m*500m,此时街道名称重新选定
Near原理推测
现在流行的各种lbs应用中,有个很常见的功能,叫做签到.
简单点说就是记录用户当前位置,并与其他人分享.一个地点在首次签到时,会要求用户填入该位置信息(比如某某街麦当劳),之后的用户可以直接选择该点签到比分享心得.
如果把点击Near圆圈按钮也作为一种签到的话,两者看起来是不是非常相似?
但是near可没有手动添加位置信息功能,所有一切都是自动的.那如何确定当前用户的签到位置呢(即在Near中显示当前用户所在街道)?
如果要我来设计这自动签到功能,考虑到记录数大小和之前的假设
我会设计成,当某个玩家在某个新地点点击near按钮获取当前经纬度并上传服务器之后,有三种结果:
1:该区域之前未被收入Near服务器统计位置,无街道名.也找不到其他玩家在此处或附近的信息.此时只记录该玩家信息,返回提示无法找到位置
2:该区域之前未被收入Near服务器统计位置,无街道名.但周围有其他玩家之前上传的信息,并且数量达到阀值.此时服务器根据玩家分布情况选定最靠近的一条街道名作为网格代表名,然后生成网格,返回该网格Near信息.
3:该区域已被收入Near服务器统计位置,直接返回该网格内的Near信息.
这样做有很多好处,没有玩家或玩家稀少的地区不用做记录,大大减少存储和运算成本.随时可以自动的更新网格大小和街道名等
再联系实际情况,没有见过当前位置只有自己的Near信息,似乎也能证明以上推测.
最终结论就是
之所以找不到位置信息,并不是因为你没有gps,也不是因为网络原因,只是单纯的因为你周围很大一片范围内都只有你一个psv玩家而已.等到周围玩家足够多之后,你的位置才会被Near收录.
另外,如果实在获取不到自己位置又有空的玩家,可以试试在同一地点反复注册不同psn帐户玩一次游戏后刷新Near,看看最后会不会获得位置.
|
|