Google地方信息库-特定语言的地方详细信息-Angular

时间:2019-08-22 09:15:52

标签: google-places-api google-places

我正在设计一个网站,要求以两种不同的语言显示地址。因此,当使用 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 来直接从浏览器发出请求。

0 个答案:

没有答案