Clojurescript - 无法限制到 Google 地点自动完成 API 中的城市

Clojurescript - Unable restrict to a city in Google Places Autocomplete API

我想搜索特定位置附近的地点。我使用选项 location、radius 和 strictbounds 进行了尝试。但是,它总是返回美国的所有地址。

我的代码如下所示:

(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。有什么想法吗?

要使 strictBounds 属性 正常工作,您需要传递边界对象,而不是文档中提到的位置和半径。

Set the strictBounds option to restrict the results to the given bounds, even while the viewport changes.

https://developers.google.com/maps/documentation/javascript/places-autocomplete#set_search_area

bounds参数必须是LatLngBounds对象或LatLngBoundsLiteral

https://developers.google.com/maps/documentation/javascript/reference/places-widget#AutocompleteOptions

如果使用 boundsstrictBounds:true 则不需要国家成分限制 and/or 可能会与给定的边界冲突。