我正在设计一个网站,要求以两种不同的语言显示地址。因此,当使用 Places API 找到地址时,我想使用返回的 place_id 调用 Place Details库以获取完全相同的位置,
我知道可以通过Rest端点调用 Place Details 时传递“语言”参数:
https://maps.googleapis.com/maps/api/place/details/json
但是,由于它导致CORS错误,因此我无法直接从浏览器调用此终结点。因此,我尝试使用 Places Details Library (地方详细信息库),据我了解,这是推荐的使用浏览器中的place_id获取位置的方法。
代码(在我使用Angular的Typescript中)如下所示:
const hongkong = new google.maps.LatLng(22.396427, 114.109497);
const map = new google.maps.Map(document.getElementById('map'), {
center: hongkong,
zoom: 15
});
const request = {
placeId: 'ChIJ1dtIFc34AzQRCO1vC37fQ_w',
language: 'zh-HK',
fields: ['name', 'address_component', 'type', 'formatted_address', 'geometry']
};
const service = new google.maps.places.PlacesService(map);
service.getDetails(request, (place, status) => {
console.log(place);
console.log(status);
});
此请求有效,结果显示在我的浏览器控制台中。 但是,结果不会以要求的语言返回。
不幸的是,文档中没有任何内容建议语言可以传递到请求中。
文件:https://developers.google.com/maps/documentation/javascript/places#place_details
如上所述,可以使用其余端点以特定语言请求 Place Details (地方详细信息),但不能使用确实不一致的 Places Library 。
我知道可以像这样在开始时设置地图的语言:
<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&language=ja"></script>
但这不是动态的,如果我想用其他语言获得相同的位置,则需要重新加载页面。
有谁知道使用“地方信息库”以特定语言请求位置详细信息的方法,而不必在其间重新加载地图javascript?
更新
解决方法是,我通过代理服务器调用https://maps.googleapis.com/maps/api/place/details/json
休息端点,以避免发生CORS问题。
但实际上更希望使用 Places Library js 来直接从浏览器发出请求。