Google 地图 getPlace().geometry 始终未定义

Google maps getPlace().geometry always undefined

我的自动完成功能很好用,我已经包含了几何库,

<script defer src="https://maps.googleapis.com/maps/api/js?libraries=places,geometry&key=xxaSyxxxxxxxx9xx&callback=initAutocomplete"></script>

这是 html+js :

<input class="forminput" id="autocomplete" maxlength="30" type=text placeholder="Ex: street.."></input>  

let placeSearch;
let autocomplete;
const componentForm = {
  street_number: "short_name",
  route: "long_name",
  locality: "long_name",
  administrative_area_level_1: "short_name",
  country: "long_name",
  postal_code: "short_name",
};


function initAutocomplete() {

  autocomplete = new google.maps.places.Autocomplete(
    document.getElementById("autocomplete"),
    { types: ["geocode"] }
  );
  //address only
  autocomplete.setFields(["address_component"]);
  //populate
  autocomplete.addListener("place_changed", fillInAddress);
}

当我阅读结果时,地方没有 geometry 属性 :

function fillInAddress() {

  const place = autocomplete.getPlace();

  console.log(place); // is good
  console.log(place.geometry); // is undefined all the time

  for (const component of place.address_components) {
  const addressType = component.types[0];
  const val = component[componentForm[addressType]];
   alert(addressType + " " + val);   //  ****** this is good !!!
  }

如何让几何图形起作用?我需要 lat/log .

对于奋斗的人来说,这很简单,

  autocomplete.setFields(["address_component","geometry"]);

出于某种原因 Google 的文档几乎将它隐藏在他们的教程中,但您必须在此处添加它 ALSO 才能使其正常工作。

这在不包含 geometry 库的情况下也有效。