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

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

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

    同样的 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
    zhengjian
        11
    zhengjian  
       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 更是不可能限制。

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

    这些信息在电脑上也能获得
    zhengjian
        33
    zhengjian  
       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


    没毛病
    zhengjian
        38
    zhengjian  
       2017-05-18 12:13:00 +08:00
    @how2ex 哦哦哦!我是传到微博图床的,哈哈哈
    zhengjian
        39
    zhengjian  
       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   ·   实用小工具   ·   1009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:11 · PVG 05:11 · LAX 13:11 · JFK 16:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.