gistda-sphere-react

useSearch

Search for POIs and perform reverse geocoding

Search for points of interest (POIs) and perform reverse geocoding.

import { useSearch } from 'gistda-sphere-react';

function SearchComponent() {
  const { search, suggest, address, nearPoi, isReady } = useSearch();

  const searchPlace = async () => {
    const results = await search('พระบรมมหาราชวัง', { limit: 10 });
    console.log(results.data);
  };

  const getSuggestions = async () => {
    const results = await suggest('สวนกุหลาบวิทยาลัย', { limit: 5 });
    console.log(results.data);
  };

  const reverseGeocode = async (location) => {
    const addr = await address(location);
    console.log(addr.address, addr.province);
  };

  return <button onClick={searchPlace}>Search Coffee Shops</button>;
}

Functions

FunctionParametersReturnsDescription
isReady-booleanSearch service initialized
suggest(keyword, options?)Promise<SearchResult>Auto-complete suggestions
search(keyword, options?)Promise<SearchResult>Search for POIs
address(location, options?)Promise<AddressResult>Reverse geocode a location
nearPoi(location, options?)Promise<PoiResult[]>Find nearby POIs
clear()voidClear search results
enablePopup(state)voidToggle popups for results
setLanguage(lang: "th" | "en")voidSet search language: "th" or "en"

SuggestOptions

OptionTypeDefaultDescription
areastringAnyRestrict to area
offsetnumber0Result offset
limitnumber10Max results
datasetstringDefaultSearch dataset

SearchOptions

OptionTypeDefaultDescription
areastringAnyRestrict to area
tagstringAnyFilter by tag
spanstringAnywhereSearch radius (e.g. "5km")
offsetnumber0Result offset
limitnumber20Max results
datasetstringDefaultSearch dataset

Return types

// SearchResult (returned by suggest and search)
{
  data: object[];
  total?: number;
}

// AddressResult (returned by address)
{
  address?: string;
  subdistrict?: string;
  district?: string;
  province?: string;
  postcode?: string;
  geocode?: string;
}

// PoiResult (returned by nearPoi)
{
  id: string;
  name: string;
  location: Location;
  category?: string;
  distance?: number;
}

On this page