【问题标题】:How to get the exact location of a user with google maps api如何使用 google maps api 获取用户的确切位置
【发布时间】:2016-05-19 11:35:01
【问题描述】:

所以我想获得访问我网站的用户的精确位置。我使用了一些服务,例如 maxmind 等,但它们并不准确,它只显示城市或地区,而不是精确的位置。

唯一能显示我确切位置的服务是谷歌,我如何使用 api 从 IP 地址获取确切位置。现在我正在使用

$address = json_decode( file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$lon) );

我如何做同样的事情,但只需传入 IP 地址。

【问题讨论】:

  • 无法从 IP 获取确切位置。
  • 我知道我们不能非常准确,但谷歌仍然能够查明我的确切位置。他们应该有一个供公众使用的 api。
  • 当 google 知道您的确切位置时,您可能已将您的位置存储在您的 google 帐户中(但在 maps-API 中无法访问此信息)

标签: google-maps google-maps-api-3 ip-address


【解决方案1】:

最好的办法是使用 HTML5 Geolocation API,更准确地说是getCurrentPosition-method。

但请记住,并非所有浏览器都支持此功能,用户需要确认您正在尝试找到他。

可以找到示例,例如这里:http://www.w3schools.com/html/html5_geolocation.asp

【讨论】:

  • 我想说几乎每个浏览器都支持它 - caniuse。唯一的好处是你现在必须在 chrome 上使用 https
  • 所以我想我不能只用 PHP 得到确切的位置。无论如何感谢您确认这一点。这是一个很好的演示它如何与 html5 paulund.co.uk/how-to-use-geolocation-api-with-google-maps 一起工作
【解决方案2】:

您可以使用 Google Maps Geolocation API 获得该信息。这是一些可以做到这一点的代码:

  function findLatLonFromIP(apiKey) {
    return new Promise((resolve, reject) => {
      $.ajax({
        url: `https://www.googleapis.com/geolocation/v1/geolocate?key=${apiKey}`,
        type: 'POST',
        data: JSON.stringify({considerIp: true}),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: (data) => {
          if (data && data.location) {
            resolve({lat: data.location.lat, lng: data.location.lng});
          } else {
            reject('No location object in geolocate API response.');
          }
        },
        error: (err) => {
          reject(err);
        },
      });
    });
  }

请注意,来自 API 的响应还会为您提供一个半径,从而为您提供基于 IP 的位置的精度。返回的纬度和经度是一个近似值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2012-02-13
    • 2017-08-31
    相关资源
    最近更新 更多