Clojure 中的 Google API class 错误
Error in Google API class in Clojure
我在 Clojure
中使用调用 Google 映射 api 时遇到此错误
(defn calculate-distance-matrix
""
[context]
;(def nearby-search-fucntion (do-nearby-search property-id context place-type) )
(let [r (. (. (. (DistanceMatrixApi/newRequest
context) origins (latlng {:lat 44.7415131 :lng 20.4957884}) )
destinations (latlng {:lat 44.71018809999999 :lng 20.50643759999999})) await)]
{:distance (-> r
.rows
first
.elements
first
.distance
.inMeters)
:duration (-> r
.rows
first
.elements
first
.distance
.inSeconds)})
)
错误信息:
IllegalArgumentException No matching method found: origins for class com.google.maps.DistanceMatrixApiRequest clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)
顺便说一句,这是 Latlng 函数:
(defn latlng
"Accepts a Latitiude and Longitude Key pairs"
[{:keys [lat lng]}]
(LatLng. lat lng))
origins
采用 Java 可变参数,它是 Clojure 的数组。所以你需要拨打的电话可能更像是:
(. (. (. (DistanceMatrixApi/newRequest context) origins (into-array [(latlng {:lat 44.7415131 :lng 20.4957884})]))
其中 into-array 采用一个集合,returns 一个基于数组第一个元素类型的数组(此处为 LatLng)。
我在 Clojure
中使用调用 Google 映射 api 时遇到此错误(defn calculate-distance-matrix
""
[context]
;(def nearby-search-fucntion (do-nearby-search property-id context place-type) )
(let [r (. (. (. (DistanceMatrixApi/newRequest
context) origins (latlng {:lat 44.7415131 :lng 20.4957884}) )
destinations (latlng {:lat 44.71018809999999 :lng 20.50643759999999})) await)]
{:distance (-> r
.rows
first
.elements
first
.distance
.inMeters)
:duration (-> r
.rows
first
.elements
first
.distance
.inSeconds)})
)
错误信息:
IllegalArgumentException No matching method found: origins for class com.google.maps.DistanceMatrixApiRequest clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)
顺便说一句,这是 Latlng 函数:
(defn latlng
"Accepts a Latitiude and Longitude Key pairs"
[{:keys [lat lng]}]
(LatLng. lat lng))
origins
采用 Java 可变参数,它是 Clojure 的数组。所以你需要拨打的电话可能更像是:
(. (. (. (DistanceMatrixApi/newRequest context) origins (into-array [(latlng {:lat 44.7415131 :lng 20.4957884})]))
其中 into-array 采用一个集合,returns 一个基于数组第一个元素类型的数组(此处为 LatLng)。