diff --git a/example/src/main/java/io/radar/example/MainActivity.kt b/example/src/main/java/io/radar/example/MainActivity.kt index cf67ad1ac..f1d688414 100644 --- a/example/src/main/java/io/radar/example/MainActivity.kt +++ b/example/src/main/java/io/radar/example/MainActivity.kt @@ -108,10 +108,30 @@ class MainActivity : AppCompatActivity() { Log.v("example", "Geocode: status = $status; address = ${addresses?.get(0)?.formattedAddress}") } + Radar.geocode("20 jay street brooklyn", arrayOf("place","locality"), arrayOf("US", "CA")) { status, addresses -> + Log.v("example", "Geocode: status = $status; address = ${addresses?.get(0)?.formattedAddress}") + } + Radar.reverseGeocode { status, addresses -> Log.v("example", "Reverse geocode: status = $status; coordinate = ${addresses?.first()?.formattedAddress}") } + Radar.reverseGeocode(arrayOf("locality", "state")) { status, addresses -> + Log.v("example", "Reverse geocode: status = $status; coordinate = ${addresses?.first()?.formattedAddress}") + } + + val reverseGeocodeLocation = Location("example") + reverseGeocodeLocation.latitude = 40.70390 + reverseGeocodeLocation.longitude = -73.98670 + + Radar.reverseGeocode(reverseGeocodeLocation) { status, addresses -> + Log.v("example", "Reverse geocode: status = $status; coordinate = ${addresses?.first()?.formattedAddress}") + } + + Radar.reverseGeocode(reverseGeocodeLocation, arrayOf("locality", "state")) { status, addresses -> + Log.v("example", "Reverse geocode: status = $status; coordinate = ${addresses?.first()?.formattedAddress}") + } + Radar.ipGeocode { status, address, proxy -> Log.v("example", "IP geocode: status = $status; country = ${address?.countryCode}; city = ${address?.city}; proxy = $proxy") } diff --git a/sdk/build.gradle b/sdk/build.gradle index e68630311..b44703345 100644 --- a/sdk/build.gradle +++ b/sdk/build.gradle @@ -10,7 +10,7 @@ apply plugin: "org.jetbrains.dokka" apply plugin: 'io.radar.mvnpublish' ext { - radarVersion = '3.11.0' + radarVersion = '3.11.1' } String buildNumber = ".${System.currentTimeMillis()}" diff --git a/sdk/src/main/java/io/radar/sdk/Radar.kt b/sdk/src/main/java/io/radar/sdk/Radar.kt index 46b7457c8..eedd1618d 100644 --- a/sdk/src/main/java/io/radar/sdk/Radar.kt +++ b/sdk/src/main/java/io/radar/sdk/Radar.kt @@ -2391,11 +2391,15 @@ object Radar { * @see [](https://radar.com/documentation/api#forward-geocode) * * @param[query] The address to geocode. + * @param[layers] Optional layer filters. + * @param[countries] Optional country filters. A string array of unique 2-letter country codes. * @param[callback] A callback. */ @JvmStatic fun geocode( query: String, + layers: Array? = null, + countries: Array? = null, callback: RadarGeocodeCallback ) { if (!initialized) { @@ -2405,7 +2409,7 @@ object Radar { } this.logger.i("geocode()", RadarLogType.SDK_CALL) - apiClient.geocode(query, object: RadarApiClient.RadarGeocodeApiCallback { + apiClient.geocode(query, layers, countries, object: RadarApiClient.RadarGeocodeApiCallback { override fun onComplete(status: RadarStatus, res: JSONObject?, addresses: Array?) { handler.post { callback.onComplete(status, addresses) @@ -2420,14 +2424,20 @@ object Radar { * @see [](https://radar.com/documentation/api#forward-geocode) * * @param[query] The address to geocode. + * @param[layers] Optional layer filters. + * @param[countries] Optional country filters. A string array of unique 2-letter country codes. * @param[block] A block callback. */ fun geocode( query: String, + layers: Array? = null, + countries: Array? = null, block: (status: RadarStatus, addresses: Array?) -> Unit ) { geocode( query, + layers, + countries, object: RadarGeocodeCallback { override fun onComplete(status: RadarStatus, addresses: Array?) { block(status, addresses) @@ -2441,10 +2451,12 @@ object Radar { * * @see [](https://radar.com/documentation/api#reverse-geocode) * + * @param[layers] Optional layer filters. * @param[callback] A callback. */ @JvmStatic fun reverseGeocode( + layers: Array? = null, callback: RadarGeocodeCallback ) { if (!initialized) { @@ -2464,7 +2476,7 @@ object Radar { return } - apiClient.reverseGeocode(location, object: RadarApiClient.RadarGeocodeApiCallback { + apiClient.reverseGeocode(location, layers, object: RadarApiClient.RadarGeocodeApiCallback { override fun onComplete(status: RadarStatus, res: JSONObject?, addresses: Array?) { handler.post { callback.onComplete(status, addresses) @@ -2480,12 +2492,15 @@ object Radar { * * @see [](https://radar.com/documentation/api#reverse-geocode) * + * @param[layers] Optional layer filters. * @param[block] A block callback. */ fun reverseGeocode( + layers: Array? = null, block: (status: RadarStatus, addresses: Array?) -> Unit ) { reverseGeocode( + layers, object: RadarGeocodeCallback { override fun onComplete(status: RadarStatus, addresses: Array?) { block(status, addresses) @@ -2500,11 +2515,13 @@ object Radar { * @see [](https://radar.com/documentation/api#reverse-geocode) * * @param[location] The location to reverse geocode. + * @param[layers] Optional layer filters. * @param[callback] A callback. */ @JvmStatic fun reverseGeocode( location: Location, + layers: Array? = null, callback: RadarGeocodeCallback ) { if (!initialized) { @@ -2514,7 +2531,7 @@ object Radar { } this.logger.i("reverseGeocode()", RadarLogType.SDK_CALL) - apiClient.reverseGeocode(location, object: RadarApiClient.RadarGeocodeApiCallback { + apiClient.reverseGeocode(location, layers, object: RadarApiClient.RadarGeocodeApiCallback { override fun onComplete(status: RadarStatus, res: JSONObject?, addresses: Array?) { handler.post { callback.onComplete(status, addresses) @@ -2529,14 +2546,17 @@ object Radar { * @see [](https://radar.com/documentation/api#reverse-geocode) * * @param[location] The location to geocode. + * @param[layers] Optional * @param[block] A block callback. */ fun reverseGeocode( location: Location, + layers: Array? = null, block: (status: RadarStatus, addresses: Array?) -> Unit ) { reverseGeocode( location, + layers, object: RadarGeocodeCallback { override fun onComplete(status: RadarStatus, addresses: Array?) { block(status, addresses) diff --git a/sdk/src/main/java/io/radar/sdk/RadarApiClient.kt b/sdk/src/main/java/io/radar/sdk/RadarApiClient.kt index 104a676e6..56d023450 100644 --- a/sdk/src/main/java/io/radar/sdk/RadarApiClient.kt +++ b/sdk/src/main/java/io/radar/sdk/RadarApiClient.kt @@ -973,6 +973,8 @@ internal class RadarApiClient( internal fun geocode( query: String, + layers: Array? = null, + countries: Array? = null, callback: RadarGeocodeApiCallback ) { val publishableKey = RadarSettings.getPublishableKey(context) @@ -984,6 +986,12 @@ internal class RadarApiClient( val queryParams = StringBuilder() queryParams.append("query=${query}") + if (layers?.isNotEmpty() == true) { + queryParams.append("&layers=${layers.joinToString(separator = ",")}") + } + if (countries?.isNotEmpty() == true) { + queryParams.append("&country=${countries.joinToString(separator = ",")}") + } val path = "v1/geocode/forward?${queryParams}" val headers = headers(publishableKey) @@ -1012,6 +1020,7 @@ internal class RadarApiClient( internal fun reverseGeocode( location: Location, + layers: Array? = null, callback: RadarGeocodeApiCallback ) { val publishableKey = RadarSettings.getPublishableKey(context) @@ -1024,6 +1033,10 @@ internal class RadarApiClient( val queryParams = StringBuilder() queryParams.append("coordinates=${location.latitude},${location.longitude}") + if (layers?.isNotEmpty() == true) { + queryParams.append("&layers=${layers.joinToString(separator = ",")}") + } + val path = "v1/geocode/reverse?${queryParams}" val headers = headers(publishableKey)