searchByCategory method

  1. @override
Future<List<PowerMapSearchResult>> searchByCategory(
  1. String categoryId,
  2. LatLng location, {
  3. int dist = 5,
  4. String lang = 'auto',
})
override

Implementation

@override
Future<List<PowerMapSearchResult>> searchByCategory(
  String categoryId,
  LatLng location, {
  int dist = 5,
  String lang = 'auto',
}) async {
  final baseUrl = PowerMapSDK.baseUrl;
  final uri = Uri.parse(
    '$baseUrl/api/v2/map/cate_v2?coor=${location.latitude},${location.longitude}&dist=$dist&type=$categoryId',
  );

  try {
    final response = await http.get(
      uri,
      headers: await PowerMapSDK.getServiceHeaders(),
    );

    if (response.statusCode == 200) {
      final List<dynamic> data = json.decode(response.body);
      return data.map((item) => PowerMapSearchResult.fromJson(item, lang: lang)).toList();
    } else if (response.statusCode == 401 || response.statusCode == 403) {
      throw PowerMapException(
        code: PowerMapException.auth,
        message: 'Authentication failed for category search request.',
      );
    } else {
      throw PowerMapException(
        code: PowerMapException.serverError,
        message:
            'Category Search API returned error status: ${response.statusCode}',
        details: response.body,
      );
    }
  } catch (e) {
    if (e is PowerMapException) rethrow;
    throw PowerMapException(
      code: PowerMapException.network,
      message: 'Category search request failed due to a network error.',
      details: e,
    );
  }
}