Google Places Autocomplete API 是 Google Maps Platform 提供的一项服务,它可以根据用户输入的部分位置信息,返回预测的完整地址列表。通过这个API,开发者可以轻松实现地址自动补全功能,并获取相关位置的经纬度坐标。
首先需要在Google Cloud Platform控制台中:
<!DOCTYPE html>
<html>
<head>
<title>地址自动补全与经纬度获取</title>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>
</head>
<body>
<input id="autocomplete" placeholder="输入地址..." type="text"/>
<div id="coordinates"></div>
<script>
function initAutocomplete() {
const input = document.getElementById("autocomplete");
const autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.addListener("place_changed", () => {
const place = autocomplete.getPlace();
if (!place.geometry) {
console.log("无法获取位置详情");
return;
}
const lat = place.geometry.location.lat();
const lng = place.geometry.location.lng();
document.getElementById("coordinates").innerHTML =
`纬度: ${lat}<br>经度: ${lng}`;
});
}
// 页面加载完成后初始化
window.onload = initAutocomplete;
</script>
</body>
</html>
const axios = require('axios');
async function getPlaceDetails(input) {
try {
// 第一步:获取自动补全预测
const autocompleteUrl = `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=${encodeURIComponent(input)}&key=YOUR_API_KEY`;
const autocompleteResponse = await axios.get(autocompleteUrl);
if (!autocompleteResponse.data.predictions.length) {
throw new Error('未找到匹配的位置');
}
const placeId = autocompleteResponse.data.predictions[0].place_id;
// 第二步:获取位置详情(包含经纬度)
const detailsUrl = `https://maps.googleapis.com/maps/api/place/details/json?place_id=${placeId}&fields=geometry&key=YOUR_API_KEY`;
const detailsResponse = await axios.get(detailsUrl);
const location = detailsResponse.data.result.geometry.location;
return {
latitude: location.lat,
longitude: location.lng
};
} catch (error) {
console.error('获取位置信息失败:', error);
throw error;
}
}
// 使用示例
getPlaceDetails('纽约时代广场')
.then(coords => console.log('坐标:', coords))
.catch(err => console.error(err));
原因:输入过于模糊或位置不存在 解决:
components
参数限制搜索区域原因:API调用次数超过免费配额 解决:
原因:自动补全返回的是预测结果 解决:
原因:网络延迟或设备性能 解决:
components
参数)提高相关性如果Google Places API不适合您的需求,可以考虑:
希望这些信息对您有所帮助!如需更具体的实现细节,可以参考Google Maps Platform的官方文档。
没有搜到相关的文章