我想搜索特定位置周围的地方。我使用选项位置,半径和严格限制进行了尝试。但是,它总是返回美国的所有地址。
我的代码如下:
(def Autocomplete (oget js/window "google.maps.places.Autocomplete"))
(defn mount-autocomplete [ctx form-props el]
(let [autocomplete (Autocomplete. el #js {:location #js {:lat 40.730610 :lng -73.935242} :radius 15 :strictBounds true :rankBy google.maps.places.RankBy.DISTANCE :componentRestrictions #js {:country "US"}})]
(ocall autocomplete "addListener" "place_changed"
(fn []
(this-as this
(let [place (js->clj (ocall this "getPlace") :keywordize-keys true)
formatted-address (join-address-parts (place->address place))]
(js/console.log formatted-address)
(oset! el "value" (:street formatted-address))
(doseq [[k v] formatted-address]
(<cmd ctx :on-change [form-props [:address k] nil v nil]))))))))
我认为它仅从给定的选项中接受componentRestrictions。有想法吗?
答案 0 :(得分:1)
要使strictBounds
属性起作用,您需要传递一个bounds对象,而不是文档中提到的位置和半径。
设置
strictBounds
选项可将结果限制在给定范围内,即使视口改变也是如此。
https://developers.google.com/maps/documentation/javascript/places-autocomplete#set_search_area
bounds
参数必须是LatLngBounds
对象或LatLngBoundsLiteral
。
如果使用bounds
和strictBounds:true
,则不需要国家/地区限制和/或可能与给定范围冲突。