Google Places Autocomplete返回geometry.bounds键名动态变化问题咨询
关于Google Places Autocomplete返回bounds对象字段名动态变化的说明
键名变动的原因
你看到的Ba、Ab、Ra、g、h这类命名无规律的属性,是Google Maps JavaScript SDK编译阶段代码混淆生成的内部私有属性,本身就不属于对外公开的API范畴。Google每次发布SDK的更新版本时,都会重新执行混淆逻辑,内部属性的命名会随机变化,官方也不会提供任何关于这些私有属性的说明文档,因为从设计上就不允许开发者直接访问这类内部属性。
正确获取bounds经纬度的方式
geometry.bounds是Google官方公开的LatLngBounds类的实例,你只需要调用该类对外暴露的固定方法即可安全获取坐标,不会受版本更新影响:
- 调用
getSouthWest()方法获取边界的西南角坐标点(LatLng实例) - 调用
getNorthEast()方法获取边界的东北角坐标点(LatLng实例) - 对LatLng实例调用
lat()方法获取纬度,调用lng()方法获取经度
修正后的代码示例如下:
import PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete' const GooglePlacesSearchBar = () => { const handleSelect = async userInput => { const result = await geocodeByAddress(userInput) const { place_id, geometry, formatted_address } = result[0] const { bounds } = geometry // 替换原直接访问内部属性的写法,使用官方公开方法 const sw = bounds.getSouthWest() const ne = bounds.getNorthEast() const swBounds = [sw.lat(), sw.lng()] const neBounds = [ne.lat(), ne.lng()] // 后续逻辑保持不变 ... }
内容的提问来源于stack exchange,提问作者asus
相关产品推荐
相关产品推荐

