Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.0

georange

Um pacote que ajuda com codificação de geohashes, decodificação de geohashes, cálculo da distância entre dois pontos e geração de faixas latitudinais e longitudinais como geohashes para ajudar na consulta de bancos de dados (testado apenas no Firestore).

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
263
Curtidas
33
Pontos Pub
150

Instalar pacote

flutter pub add georange

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

georange é um pacote Flutter/Dart projetado para tarefas de geolocalização, permitindo codificação e decodificação de geohash, cálculo de distâncias entre dois pontos geográficos e geração de faixas de latitude e longitude como geohashes. Esses recursos são particularmente úteis para otimizar consultas de banco de dados em aplicações geoespaciais, com testes e otimizações específicas para o Firestore. O pacote suporta múltiplas plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-o versátil para desenvolvimento multiplataforma.

Casos de uso

  • indexação de dados geoespaciais
  • Consultas de localização baseadas em Firestore
  • Cálculo de distância entre coordenadas
  • Rastreamento de localização em tempo real
  • Recursos de busca com base na localização
  • Filtragem de banco de dados baseada em intervalo eficiente

Principais recursos

  • Codificação e decodificação de Geohash
  • Cálculo da distância entre dois pontos
  • Geração de intervalos de geohash para consultas
  • Otimizado para Firestore
  • Compatibilidade multiplataforma
  • API simples para operações geoespaciais

Indicado para

  • Desenvolvedores criando aplicativos baseados em localização
  • Aplicativos que exigem consultas eficientes em banco de dados geoespaciais
  • Projetos usando o Firestore com dados de geolocalização
  • Aplicações móveis e web multiplataforma
  • Aplicações que precisam de pesquisas rápidas de proximidade

Considerações

  • Principalmente testado no Firestore
  • Limitado ao índice espacial baseado em geohash
  • Requer entendimento dos conceitos de geohash
  • Não otimizado para bancos de dados não geoespaciais
  • Depende de entrada de coordenadas precisa
  • Pode ser necessário lógica adicional para consultas espaciais de casos especiais

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

georange

Dart License: MIT Pub Version

Georange is a package that helps with encoding geohashes, decoding geohashes,calculating distance between 2 points and generating latitudinal and longitudinal ranges as geohashes to help with the querying of databases (Tested on Firestore Only).

Heavily influenced by GeoFlutterFire

Buy Me A Coffee

Getting Started

You should ensure that you add Georange as a dependency in your flutter project.

dependencies:
  georange: <latest-version>

You should then run flutter packages get

Example

There is a detailed example project in the example folder.

Initialize

Import georange to your dart file and initialize

import 'package:georange/georange.dart';
GeoRange georange = GeoRange();
Encode LatLng

This method encodes the latitude and longitude

var encoded = georange.encode(-1.2862368,36.8195783);
print(encoded);

prints kzf0tvg5n

Decode Geohash

Decode a [geohash] into a pair of latitude and longitude.

Point decoded = georange.decode("kzf0tvg5n");
print(decoded);

prints -1.2862372398376465 36.819584369659424

Generate Range
  Range range = georange.geohashRange(-1.2921, 36.8219, distance: 10);
  print(range.lower);
  print(range.upper);

prints kzf05k6hh kzf30mptu

Calculate Distance between 2 Points
  Point point1 = Point(latitude: -4.0435, longitude: 39.6682); //Mombasa
  Point point2 = Point(latitude: -1.2921, longitude: 36.8219); // Nairobi

  var distance = georange.distance(point1, point2);
  print(distance);

prints 439.716 Distance in Kilometres

Usage with Firestore

  1. Add a document to firestore with a geohash field or a different name
  final FirebaseFirestore _db;
  ...
  String myhash = georange.encode(-1.2862368,36.8195783);
  await _db.collection("locations").add({
    "geohash":myhash,
  })
  ...
  1. Query Firestore (Runs like a normal firestore query)
final FirebaseFirestore _db;

GeoRange georange = GeoRange();

Range range = georange.geohashRange(currentLocation.latitude, currentLocation.longitude, distance:10);

QuerySnapshot snapshot = await _db
 .collection("locations")
 .where("geohash", isGreaterThanOrEqualTo: range.lower)
 .where("geohash", isLessThanOrEqualTo: range.upper)
 .limit(10)
 .get();

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.