如何使用 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 的位置的精确度。返回的纬度和经度是一个近似值。
所以我想获取访问我网站的用户的精确位置。我使用过一些服务,如 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 的位置的精确度。返回的纬度和经度是一个近似值。