Category search
This example does not contain a UI. Results will be logged in Android Studio.
Note
This example is a part of the Search SDK for Android sample app. You can find the values for all referenced resources in the res
directory. For example, see res/values/strings.xml
for R.string.*
references used in this example. The dependencies can be found here.The examples use View binding.See setup documention if necessary.
package com.mapbox.search.sample.api;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.mapbox.search.ApiType;
import com.mapbox.search.AttributeSet;
import com.mapbox.search.CategorySearchOptions;
import com.mapbox.search.ResponseInfo;
import com.mapbox.search.SearchCallback;
import com.mapbox.search.SearchEngine;
import com.mapbox.search.SearchEngineSettings;
import com.mapbox.search.common.AsyncOperationTask;
import com.mapbox.search.result.SearchResult;
import java.util.Arrays;
import java.util.List;
public class CategorySearchJavaExampleActivity extends AppCompatActivity {
private AsyncOperationTask searchRequestTask;
private final SearchCallback searchCallback = new SearchCallback() {
@Override
public void onResults(@NonNull List<SearchResult> results, @NonNull ResponseInfo responseInfo) {
if (results.isEmpty()) {
Log.i("SearchApiExample", "No category search results");
} else {
Log.i("SearchApiExample", "Category search results: " + results);
}
}
@Override
public void onError(@NonNull Exception e) {
Log.i("SearchApiExample", "Search error", e);
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final SearchEngine searchEngine = SearchEngine.createSearchEngineWithBuiltInDataProviders(
ApiType.SEARCH_BOX,
new SearchEngineSettings()
);
final CategorySearchOptions options = new CategorySearchOptions.Builder()
.limit(10)
.ensureResultsPerCategory(true)
.attributeSets(
Arrays.asList(
AttributeSet.BASIC,
AttributeSet.VISIT,
AttributeSet.VENUE,
AttributeSet.PHOTOS
)
)
.build();
searchRequestTask = searchEngine.search(
Arrays.asList("cafe", "coffee_shop", "hotel"),
options,
searchCallback
);
}
@Override
public void onDestroy() {
searchRequestTask.cancel();
super.onDestroy();
}
}
package com.mapbox.search.sample.api
import android.os.Bundle
import com.mapbox.search.ApiType
import com.mapbox.search.AttributeSet
import com.mapbox.search.CategorySearchOptions
import com.mapbox.search.ResponseInfo
import com.mapbox.search.SearchCallback
import com.mapbox.search.SearchEngine
import com.mapbox.search.SearchEngineSettings
import com.mapbox.search.common.AsyncOperationTask
import com.mapbox.search.result.SearchResult
import com.mapbox.search.sample.R
class CategorySearchKotlinExampleActivity : BaseKotlinExampleActivity() {
override val titleResId: Int = R.string.action_discover_kotlin_example
private lateinit var searchEngine: SearchEngine
private var searchRequestTask: AsyncOperationTask? = null
private val searchCallback: SearchCallback = object : SearchCallback {
override fun onResults(results: List<SearchResult>, responseInfo: ResponseInfo) {
if (results.isEmpty()) {
logI("SearchApiExample", "No category search results")
} else {
logI("SearchApiExample", "Category search results:", results)
}
onFinished()
}
override fun onError(e: Exception) {
logI("SearchApiExample", "Search error", e)
onFinished()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Set your Access Token here if it's not already set in some other way
// MapboxOptions.accessToken = "<my-access-token>"
searchEngine = SearchEngine.createSearchEngineWithBuiltInDataProviders(
ApiType.SEARCH_BOX,
SearchEngineSettings()
)
}
override fun startExample() {
searchRequestTask = searchEngine.search(
listOf("cafe", "coffee_shop", "hotel"),
CategorySearchOptions(
limit = 10,
ensureResultsPerCategory = true,
attributeSets = listOf(
AttributeSet.BASIC,
AttributeSet.VISIT,
AttributeSet.VENUE,
AttributeSet.PHOTOS,
),
),
searchCallback
)
}
override fun onDestroy() {
searchRequestTask?.cancel()
super.onDestroy()
}
}
Was this example helpful?