Clojurescript-无法在Google Places Autocomplete API中限制城市

时间:2019-02-15 12:43:17

标签: google-maps google-places-api clojurescript

我想搜索特定位置周围的地方。我使用选项位置,半径和严格限制进行了尝试。但是,它总是返回美国的所有地址。

我的代码如下:

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

1 个答案:

答案 0 :(得分:1)

要使strictBounds属性起作用,您需要传递一个bounds对象,而不是文档中提到的位置和半径。

  

设置strictBounds选项可将结果限制在给定范围内,即使视口改变也是如此。

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,则不需要国家/地区限制和/或可能与给定范围冲突。