如何使用 google 地图 api 获取用户的确切位置

How to get the exact location of a user with google maps api

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

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

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

我如何做同样的事情,只是传递 ip 地址。

您最好的选择是使用 HTML5 地理定位 API,更准确地说是 getCurrentPosition 方法。

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

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

您可以使用 Google 地图地理定位 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 的位置的精确度。返回的纬度和经度是一个近似值。