- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在手动触发此事件时能够从 autocomplete.getPlace()
返回数据。
基本上,我有一个函数可以获取用户在 Lat/Lng
中的位置,之后我想获取用户的 getPlace(),因为有更多有用的数据,例如 place_id、照片(最想要的)、引用资料等
到目前为止,我几乎可以做所有事情,我什至可以手动触发事件,但它返回undefined
。这是我到目前为止的代码:
var latLng = response; //Comes from another function
geocoder.geocode({'location': latLng}, function(results, status) {
if (status === 'OK') {
if (results[1]) {
var fullAddress = results[0].formatted_address;
var input = document.createElement("input");
input.setAttribute("value", fullAddress);
var autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var thisPlace = autocomplete.getPlace();
console.log(thisPlace);
});
google.maps.event.trigger(autocomplete, 'place_changed');
}
}
});
这里的一切都正常,但是 autocomplete.getPlace()
的返回是未定义
。
如果运行相同的函数,但来自 native 自动完成元素,则返回是正确的。
我做错了什么?
最佳答案
看起来您想要相当于 Android Place Picker 的 JavaScript 。 Places library中没有这样的小部件。考虑filing a feature request .
您当前的方法似乎遵循以下原则:
在第 1 步中使用 geocoder.geocode()
是可以的,但您需要注意接收的结果:如果第一个结果是公交车站,则它的地址不会是有用。
你最好使用 Radar Search ,搜索距原始纬度/经度输入最近的位置。这还避免了反向地理编码将用户位置捕捉到不太近的地址可能产生的问题。然后您需要发出一些Details请求获取最近的 N 个地点的名称(和其他详细信息)。
在步骤 2 中使用自动完成功能效果不佳。自动完成具有多个地点的地址很少会列出所有地点。
此外:不要手动触发 place_changed
,这不是它的工作原理。
place_changed
事件由 Autocomplete 触发仅在制作 PlaceResult 后才上课可用的。如果用户从自动完成预测中选择了地点,则需要调用地点详细信息服务,以检索您实际想要获取的详细信息。
This event is fired when a PlaceResult is made available for a Place the user has selected. If the user enters the name of a Place that was not suggested by the control and presses the Enter key, or if a Place detail request fails, a place_changed event will be fired that contains the user input in the name property, with no other properties defined.
如果您手动触发 place_changed
,则没有为您准备好的 PlaceResult
,这就是为什么 autocomplete.getPlace()
只会返回未定义
。
关于javascript - 手动触发时,自动完成的 Google API getPlace 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856333/
我在点击和输入更改事件时动态添加了一个文本输入,我需要获取 google api getPlace() 值。 按回车键时效果很好,但是当我从鼠标中选择mouseclick时,place_changed
我正在尝试开发基于 google place API 的应用程序。当我尝试使用时 Place place=PlacePicker.getPlace(data,this); 有一个错误显示 getPla
我正在使用 Google map 自动完成功能,一切正常。 但我想知道是否可以从自定义字符串运行 .getPlace() 函数,无论是坐标还是地址。例如,我不想使用输入字段并单击位置来选择它,而是想手
基于 Google API 的应用程序。当我尝试使用 Place place = PlacePicker.getPlace(this, data) 出现错误显示: cannot resolve met
我是 angularJs/coffeescript 的新手,正在尝试将其与谷歌地图集成。 目标是使用 getPlace() 自动完成后获取 place_id,并将其传递给服务方法将其存储在安全的地方,
调用 autocomplete.getPlace() 时,返回的 PlaceResult 对象现在缺少 formatted_phone_number、international_phone_numbe
我希望在手动触发此事件时能够从 autocomplete.getPlace() 返回数据。 基本上,我有一个函数可以获取用户在 Lat/Lng 中的位置,之后我想获取用户的 getPlace(),因为
我正在尝试在 React 中重新创建这个 Google 自动完成示例:https://developers.google.com/maps/documentation/javascript/examp
setAutocomplete() { this.originPlaceId = null; this.destinationPlaceId = null; this.trav
我想将来自 google the places api 的经度/纬度结果传递到我的 MVC 应用程序操作路由值。我不确定如何将它获取到我的路由值或如何将 javascript 返回到 html 值。现
我有一个使用谷歌地图自动完成库的地址搜索框: var autocompleter = new google.maps.places.Autocomplete(item); 有一个奇怪的情况是地址只返回
我也试过触发事件 google.maps.event.trigger(autocomplete, 'place_changed'); 但是在我手动更改城市之前,autocomplete.getPlac
我是一名优秀的程序员,十分优秀!