为什么智能手机能通过网络定位而电脑却不行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
how2ex
V2EX    程序员

为什么智能手机能通过网络定位而电脑却不行?

  •  
  •   how2ex 2017-05-16 12:53:57 +08:00 7023 次点击
    这是一个创建于 3068 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同样的 wifi,用智能手机连接后能大致定位。用电脑浏览器打开网页版地图就无法定位。什么原理?

    47 条回复    2017-05-23 11:31:19 +08:00
    cnta
        1
    cnta  
       2017-05-16 13:10:57 +08:00
    智能手机 WiFi 定位原理,不管 GPS 和基站定位的话,需要有服务器的存在,收集用户的地理位置信息与 WiFi 热点的 MAC,系统提供 API。windows 应该没有对应的服务,不保证完全对,但是大概是这么回事。
    LokiSharp
        2
    LokiSharp  
       2017-05-16 15:27:45 +08:00   3
    先问是不是,再问能不能。
    how2ex
        3
    how2ex  
    OP
       2017-05-16 16:02:15 +08:00
    @cnta 肯定是有一个基站跟位置的对应关系,难道这个对应关系是手机提供的?还有就是网络运营商如果不提供基站位置信息,其他平台如何获得这个对应关系?
    mangovi
        4
    mangovi  
       2017-05-16 16:17:22 +08:00
    电脑也可以定位啊
    bukip
        5
    bukip  
       2017-05-16 16:40:18 +08:00
    电脑也可以
    wc951
        6
    wc951  
       2017-05-16 16:42:02 +08:00 via Android
    win10 有位置服务啊
    cnta
        7
    cnta  
       2017-05-16 16:47:35 +08:00
    @how2ex 你可以看看苹果手机 /android 手机的 WiFi 定位原理,有很多定位方式的。电脑上网页一般根据你的 IP 地址定个大概的位置,不过由于有无线网卡,利用智能手机的 WIFi 定位原理笔记本理论上也能一样的弄。(假设你问的就是 WiFi 定位啊)
    Shura
        8
    Shura  
       2017-05-16 16:50:51 +08:00 via Android
    电脑也有,比如 html5 就有专门用于获取地理位置的 API,不区分终端设备的。
    xyfan
        9
    xyfan  
       2017-05-16 16:56:00 +08:00
    每次电脑打开百度地图都能精确定位。电脑与手机相比少了基站信息,但其他信息大部分都有。
    panda1001
        10
    panda1001  
       2017-05-16 17:22:19 +08:00   1
    @cnta
    手机高精度定位基本上就是 基站 热点 MAC 地址 GPS 低精度的 IP 地址 重要的是 app 拿到信息后及时上传
    电脑能拿到上面某一种一样可以高精度定位

    前些日子的百度高精度 IP 数据库 不知多少人的国外 VPS 中招 某墙要是维护这个数据库后果可想而知

    基站 MAC 地理位置 API http://www.cellocation.com/interfac/

    树莓派插上 3g 网卡一样可以基站定位
    https://ooo.0o0.ooo/2017/05/16/591ac3571f69d.png
    mmnsghgn
        11
    mmnsghgn  
       2017-05-16 19:11:17 +08:00


    macOS 的地图,宿舍位置都不差。
    rssf
        12
    rssf  
       2017-05-16 19:13:25 +08:00 via iPhone
    @zhengjian 这种定位需要有 wifi。如果是个台式机只插网线,就没这么准了
    cnta
        13
    cnta  
       2017-05-16 19:22:13 +08:00 via Android
    @panda1001 嗯,是有多种定位方式,当时看到楼主的关键字是连上 WiFi 手机能精确定位电脑不行,着重点就在 WiFi 定位了。应该还是 GPS+热点 MAC 定位效果最好,基站都感觉不太精确了。
    linhua
        14
    linhua  
       2017-05-16 19:29:22 +08:00
    Devmingwang
        15
    Devmingwang  
       2017-05-16 20:21:01 +08:00
    网页定位当然是不行的,windows 系统下面浏览器是没法直接访问硬件层面的(就是当前搜到多少 wifi 等等)。
    手机的话,除非是这个 wifi 热点存在了很多年(谷歌没有被封之前就有),不然也是还需要依靠基站和当前能搜到的其他 wifi 进行定位的,最差劲的时候是需要依赖 ip 地址的。
    qiukong
        16
    qiukong  
       2017-05-16 20:35:54 +08:00 via iPhone
    @zhengjian 我要没记错,macbook 应该有内置 GPS
    lightening
        17
    lightening  
       2017-05-16 20:41:13 +08:00
    @rssf 手机也是啊,要是没 wifi 也不行啊。
    lightening
        18
    lightening  
       2017-05-16 20:41:23 +08:00
    @qiukong 你记错了
    qiukong
        19
    qiukong  
       2017-05-16 20:51:37 +08:00 via iPhone
    @lightening 确实记错,献丑了……
    bolice
        20
    bolice  
       2017-05-17 10:08:07 +08:00
    弱弱的问一句,苹果的耳机是怎么定位的?
    buildops
        21
    buildops  
       2017-05-17 11:27:34 +08:00
    @bolice AirPods 是通过蓝牙和手机定位。
    how2ex
        22
    how2ex  
    OP
       2017-05-17 13:04:16 +08:00
    @linhua www.opengps.cn 这个网址我曾经在不同 IP 地址测试过,基本上只能定位你所在城市,用手机地图打开能定位到精度几百米。当然手机没有打开 GPS。
    how2ex
        23
    how2ex  
    OP
       2017-05-17 13:05:13 +08:00
    @Shura 有 html5 的测试网址吗?
    how2ex
        24
    how2ex  
    OP
       2017-05-17 13:06:57 +08:00
    @xyfan 我在 Win7 上分别使用 chrome 和 IE 打开 map.baidu.com,点击右下角定位按钮,提示失败。打开 amap.com,能定位到城市。
    how2ex
        25
    how2ex  
    OP
       2017-05-17 13:26:48 +08:00
    @zhengjian 题外话,你上传的图片是会员功能吗?
    how2ex
        26
    how2ex  
    OP
       2017-05-17 13:39:27 +08:00
    @panda1001 http://www.cellocation.com/interfac/ 这个网感觉有点实质性的关于定位的内容,但是没搞懂。
    how2ex
        27
    how2ex  
    OP
       2017-05-17 13:39:56 +08:00
    @panda1001 顺带发现了一个贴图网站,很快! SM.SM
    kingmo888
        28
    kingmo888  
       2017-05-17 14:48:05 +08:00
    @xyfan 我敢说,你的百度地图 web 是登录状态的。哈哈。而且你手机在你身边。它还是用了你的手机数据
    how2ex
        29
    how2ex  
    OP
       2017-05-17 14:53:55 +08:00
    @kingmo888 没有登录噢,要不你截图给大家欣赏一下。可以将图片上传至 https://sm.ms/再分享链接
    keinx
        30
    keinx  
       2017-05-17 17:16:41 +08:00
    @kingmo888
    我没有登录百度,手机上也就只有一个百度输入法(登录的),mac 电脑上没有百度的产品而且也没有登录百度地图
    ![]( https://ooo.0o0.ooo/2017/05/17/591c143b2e068.png)
    dven
        31
    dven  
       2017-05-17 18:45:05 +08:00
    很难获得宽带的安装位置,不像手机基站,除非笔记本中有 GPS 模块
    honeycomb
        32
    honeycomb  
       2017-05-17 22:26:27 +08:00
    电脑也可以啊


    “智能手机能通过网络定位”
    通常是只需要用这个手机当前连接的接入点的 BSSID,SSID 和公网 IP 就能给出足够好的定位了。
    这就是为什么有的应用不给它定位权限,依然能粗略定位的原因,因为定位权限一般不限制访问当前已连接的接入点的 BSSID/SSID,公网 IP 更是不可能限制。

    如果需要更准确的,那么加上周围其它接入点的信息可以计算出更好的定位。

    这些信息在电脑上也能获得
    mmnsghgn
        33
    mmnsghgn  
       2017-05-17 23:54:14 +08:00
    @how2ex 你是指什么会员功能?
    how2ex
        34
    how2ex  
    OP
       2017-05-18 11:14:29 +08:00
    @zhengjian 充值后,图片可以上传到 V2EX Image Hosting。
    how2ex
        35
    how2ex  
    OP
       2017-05-18 11:25:49 +08:00
    @keinx 你的截图上的定位准确吗?精度大概多少米?
    how2ex
        36
    how2ex  
    OP
       2017-05-18 11:29:36 +08:00
    @honeycomb 你说的 SSID 就是我家 wifi 的名称吧?如果是的话,我随便改个名称岂不是定位信息会发生变化?
    你电脑可以定位吗?可以的话截个图给大家学习学习呀。[笑脸]
    截图可以上传到 sm.ms
    zengfxios
        37
    zengfxios  
       2017-05-18 12:08:23 +08:00


    没毛病
    mmnsghgn
        38
    mmnsghgn  
       2017-05-18 12:13:00 +08:00
    @how2ex 哦哦哦!我是传到微博图床的,哈哈哈
    mmnsghgn
        39
    mmnsghgn  
       2017-05-18 12:14:56 +08:00
    @zengfxios 哈哈哈,巧了,咱就 6.5 公里的距离
    xyfan
        40
    xyfan  
       2017-05-18 12:20:50 +08:00 via Android
    @kingmo888 网页的确是登录状态,但我手机里没有任何百度系应用,百度还能凭空获取我手机信息不成?
    skylancer
        41
    skylancer  
       2017-05-18 14:17:41 +08:00
    @how2ex mac 不会变啊...
    honeycomb
        42
    honeycomb  
       2017-05-18 14:53:38 +08:00 via Android
    @how2ex

    bssid 不能随意修改,bssid 就是 AP 的 mac。所以改 SSID 可以认为无意义。bssid 的参考作用比 ssid 更强。

    其实很多情况下,即便不在无线网络下,只要有公网 IP 地址也能获得非常好的定位精度。前段时间百度提供的高精度 IP 定位就是一个例子。


    @xyfan
    问题在于,你认为你手机里没有百度系应用,不等于你手机里确实没有百度系的应用(或者其它执行定位功能的代码):
    1,定位 sdk
    2,只需要公网 IP 地址的高精度 IP 定位 API,当然这个对于手机效用会低一些,因为仅使用蜂窝网络时,手机的公网地址一般是运营商的内网地址,随时会变。
    3,手机 framework 层的的辅助定位系统( agps 等)用的就是百度提供的接口
    xyfan
        43
    xyfan  
       2017-05-18 19:40:56 +08:00
    @honeycomb 我只是在反驳 kingmo888 而已,至于我的手机在绿守+冰箱+xprivacy 的联合管理下,我自认为没有百度定位 SDK 能在我不知道的情况下运行。其次我手机里的辅助定位用的谷歌家的框架。我知道国内厂商的手机大多使用百度或高德的框架,但我的手机不是。
    honeycomb
        44
    honeycomb  
       2017-05-18 23:40:11 +08:00
    @xyfan 抱歉我好像是回复错人了!
    how2ex
        45
    how2ex  
    OP
       2017-05-19 12:44:32 +08:00
    @honeycomb “ bssid 不能随意修改,bssid 就是 AP 的 mac。”按照你的说法,我换个路由器或者修改路由器的 mac 就会对定位有影响?但我用手机纯网络定位,感觉跟 mac 没啥关系噢,不管连接到什么设备,网络定位都是比较准的。精度几百米到 2km 不等。
    honeycomb
        46
    honeycomb  
       2017-05-19 20:00:55 +08:00 via Android
    @how2ex

    你换一个路由器的结果:

    1,bssid 变更,ssid 说不定也被你换了。
    2,IP 地址可能因为重新拨号也换了。

    这个时候你用手机”纯网络定位“,看样子是给了 coarse_location 权限,但没有给 precise_location 权限,如此:

    定位逻辑代码用 getScanResult()获得的结果(返回扫描附近的 AP 列表)没有什么变化,除了信号最强的那个 AP (你家的路由器)不一样了。
    后台由此判定出的位置和之前没有什么区别。

    这里还没考虑其实你还开着蜂窝网络,基站的标识符也可以提供类似 BSSID 的定位作用,如果是 LTE,还可能提供专用于定位功能的报文来获得更好的定位结果。

    除此以外还有蓝牙 beacon,地磁信息等内容提供室内的高精度辅助定位等。
    bolice
        47
    bolice  
       2017-05-23 11:31:19 +08:00
    @buildops #21 不能令我信服,AirPods 丢了,不在手机身边,无法连接到手机时改怎么定位?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3374 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 04:31 PVG 12:31 LAX 21:31 JFK 00:31
    Do have faith in what you're doing.
    ubao 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