Orientação gerada a partir de informações públicas. Apenas para referência.
Poly é uma biblioteca Dart projetada para determinar se um ou mais pontos estão dentro de um polígono. Ela fornece cálculos geométricos eficientes para testes de ponto em polígono, úteis na análise de dados espaciais, aplicações de mapeamento e gráficos interativos. A biblioteca suporta polígonos simples e complexos, incluindo aqueles com buracos. É leve, fácil de integrar via gerenciador de pacotes do Flutter e ideal para aplicativos que exigem consultas espaciais em tempo real. O código-fonte está publicamente disponível no GitHub para transparência e personalização.
Casos de uso
Aplicações geoespaciais
Recursos de mapa interativo
Desenvolvimento de jogos
Detecção de colisão
Visualização de dados
Principais recursos
Teste de ponto em polígono
Suporte para polígonos complexos
Leve e rápido
Integração fácil com o Flutter
Open-source no GitHub
Indicado para
Desenvolvedores Flutter trabalhando com mapas
Aplicações que precisam de lógica espacial
Jogos com detecção de impacto
Ferramentas para processamento de dados geográficos
Considerações
Não suporta polígonos 3D
Sem utilitários embutidos para criação de polígonos
Limitado à geometria no plano 2D
Requer definição manual de polígono
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
poly
A library for checking if given point(s) is present inside Polygon or not.
type List<dynamic> is not a subtype of type List<num> in type cast
with as List<List<num>> -
type List<List<dynamic>> is not a subtype of type List<List<num>> in type cast
Note: Instead of casting, use toListNum() & toListListNum()
Use toListNum() for List<dynamic> => List<num>
Use toListListNum() forList<List<dynamic>> => List<List<num>>
Function List
Conversion Type
List<num> to Point(x,y) : use toPoint()
i.e. [x,y] -> Point(x,y)
Point can be created passing List<num>toPoint().
List must have exact 2 elements, else will throw WrongSizeForPoint exception
Point(x,y) to List<num> : use pointToList()
i.e. Point(x,y) -> [x,y]
List can be created passing Point(x,y)pointToList().
List<List<num>> to List<Point<num>> : use toListOfPoint()
i.e. [ [x1,y1],[x2,y2],... ] -> [ Point(x1,y1), Point(x2,y2),... ]
List of Points can be created from List<List<num>> by passing it to toListOfPoint()
List<Point<num>> to List<List<num>> : use pointsToList()
i.e. [ Point(x1,y1), Point(x2,y2),... ] -> [ [x1,y1],[x2,y2],... ]
List can be created passing List<Point<num>>pointsToList().
List<List<num>> to Polygon : use toPolyFromListOfList()
i.e. [ [x1,y1],[x2,y2],... ] -> Polygon( Point(x1,y1), Point(x2,y2),... )
Polygon can be returned from List<List<num>> by passing it to toPolyFromListOfList()
List<List<num>> to Polygon : use listOfList()
i.e. [ [x1,y1],[x2,y2],... ] from Polygon( Point(x1,y1), Point(x2,y2),... )
List<List<num>> can be returned from Polygon by passing it to listOfList()
List<dynamic> to List<num> : use toListNum()
Returns List<num> from a List<dynamic>
Can be used with [toPoly] as it accepts List<num>
Optional Parameters -
sizeTwo
Default value true
When set false, Output List can have more than 2 elements
replaceWithZero
Default value false
When set true, elements with type String or bool will be replaced with 0, rather than being removed
reverseIt
Default value false
When set true, List will be reversed
List<List<dynamic>> to List<List<num>> : use toListListNum()
Returns List<List<num>> from a List<List<dynamic>>
Can be used with functions like [areAllPointsInsidePolygon_List] , [getList_IsListOfListInside] , [toPolyFromListOfList] , [toListOfPoint] which accepts List<List<num>>
Optional Parameters -
replaceWithZero
Default value false
When set true, elements with type String or bool will be replaced with 0, rather than being removed
swapXAndY
Default value false
When set true, xi will be swapped with yi
i.e. [ [x1,y1], [x2,y2], ...] -> [ [y1,x1], [y2,x2], ...]
is Point(s) inside
Check if Single Point is inside
Get Status by passing x and y to contains
returns true if (x,y) is present inside Polygon
Get Status by passing Point(x,y) to isPointInside
returns true if Point is present inside Polygon
Check if Single Point is inside Polygon with tolerance of T meter
Get Status by passing Point(x,y) and Tolerance T to isPointInside