如何通过 Google Map 的 API 来获取当前网站访客的地理位置?

我是先通过 https://www.googleapis.com/geolocation/v1/geolocate?key=这个 API 获取经纬度, 然后根据反向地里编码获取实际位置,API 是 https://maps.googleapis.com/maps/api/geoco...

但是实际测试中发现,这个获取到到经纬度并不是访客所处地址的经纬度,而是服务器所在的经纬度,不知道是什么原因,各位有谁有遇到过的吗?

经过我测试是 Google Maps Geolocation API 这个 API 返回的经纬度不正确,但是我不知道他这个返回的经纬度是依据什么来判断的呢?贴出 API 地址: https://developers.google.com/maps/documen...

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

1、在客户端运行Google Map,再返回到服务器。
2、通过获取客户端的ip,调用接口返回经纬度?不知道有没有这个接口,之前在腾讯地图调用过,能定位到城市。

以上。
如有错误,劳烦指出。

3年前 评论

@IceBay 对1,你觉得让访客本来开着Google Map,然后再浏览我的网站,靠谱吗。。。
对 2,我用了百度地图,调用本地ip,但是不知道是什么情况,如果我把ip也post上去,他会返回一个错误给我,,百思不得其解,对于谷歌,目前还没了解到可以提交ip的API。。。

3年前 评论

是这样的,我之前在做一个餐饮的定位。
本地运行的时候,采用的高德地图,他们有一个jssdk,并不会生成一个地图,。
只需要引入他们的js,再通过对应的接口,就能获取到经纬度等信息。
当然,这么做,相当于延迟记录用户位置,体验并不好。

3年前 评论

你所访问的接口确定是在客户端执行而不是在服务端运行的吗?如果是在服务端运行,获取的自然是服务端的。需要在html里加载运行后通知服务端。

3年前 评论

@IceBay 我刚刚重新溜了一下我的代码逻辑,确实,访问接口这一步是在服务端执行的,,所以也就理所当然地返回给了我服务器所在的地址,,,那么谷歌并没有通过ip返回经纬度的API,我去看看高德的那个jssdk吧,,祝我好运!!!

3年前 评论

@IceBay 事实上我失败了,我很确信这次我的发起请求是从客户端发起的,在我本地测试结果非常正确,但是放到上线实测时,他获取的到的地址依然是服务端的地址,,百思不得其解,这是我的网站:www.top1sensor.com,右下角的留言里有个address字段,就是这个字段我会获取地址并且自动填充进去。

3年前 评论

@米休love
<input id="f_address" class="text" name="address" type="text" value="这里是地址" />
这是我在你的站点上看到的内容,通过右键审核元素查看到的。说明并不是在客户端执行的。
如果你想要获取的是客户端的地址。那么,你就需要在页面上添加一段javascript,不管是哪家的地图。你都必须是在客户端上添加,而不是在服务器上获取后手动添加到输入框里。
emmmm...第一次访问应该不存在缓存。

3年前 评论

OK,但是我不知道本地为什么是正确的。。

3年前 评论

@米休love

AMap.plugin('AMap.Autocomplete',function(){//回调函数
    //调用高德地图进行poi搜索
    let autoComplete = new AMap.Autocomplete(_this.poiOptions);
    autoComplete.search(keyword, function (status, result) {
        if(status === 'complete'){
            _this.searchResult = result.tips;
            _this.hasSearchResult = true;
        }else{
            _this.hasSearchResult = false;
        }
     });
 });

以上是我之前调用高德的一段代码,可以对着文档参考下。

3年前 评论

@米休love
本地是指localhost吧?那就是127.0.0.1,也就是本机,所以显示看起来是正常。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!