Test de Point à l'intérieur d'un polygone dans Android
L'autre jour j'ai fait une classe en Java pour calculer si un point(X,Y)
est à l'intérieur d'un polygone. (X
et Y
sont double
, parce que seront les coordonnées géographiques).
Je sais que Java a la classe Polygon
, mais j'ai dû utiliser Path2D
et Point2D
, parce que Polygon
ne permettent pas de double
's, tout entiers 🙁
Une fois que j'ai le polygone fait dans Path2D
, j'ai utilisé la méthode contains
(Path2D
a), et mon problème a été résolu.
Mais maintenant, je veux importer pour Android, et le problème est ici, parce que Path2D
besoins d'importation:
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
et dans Android n'existe pas awt, je ne peux donc pas utiliser.
Donc, il n'existe aucune catégorie similaire à Path2D
qui avait contains
méthode? ou je dois calculer par moi-même?
Voici comment je l'ai fait en Java à l'aide de Path2D
:
private void ConstructPolygon(Vector<Point2D> coodinates)
{
this.polygon.moveTo(coodinates.get(0).getX(), coodinates.get(0).getY());
//System.out.println(coodinates.get(0).getX() + " " + coodinates.get(0).getY());
//System.out.println("asda");
for(int i = 1; i < this.num_points; i++)
{
//System.out.println(coodinates.get(i).getX() + " " + coodinates.get(i).getY());
this.polygon.lineTo(coodinates.get(i).getX(), coodinates.get(i).getY());
}
this.polygon.closePath();
}
public boolean InsideCity(Point2D punto)
{
return this.polygon.contains(punto);
}
double
valeurs par 10 000 et utilisé avec Java Polygon
classe?OriginalL'auteur Shudy | 2013-04-04
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser mon simple bibliothèque exactement à cela: https://github.com/snatik/polygon-contains-point.
Préparer polygone:
Et vérifier alors que le point est à l'intérieur du polygone:
Il fonctionne avec les types float et avec des polygones qui contiennent des trous 🙂
Notez que ce code échoue le test cas où vous arrive d'atteindre directement le sommet avec un étrange incliné ray il utilise.
Cette bibliothèque a des questions, même avec la plus simple des formes, vérifiez la liste des problèmes avant d'envisager. github.com/sromku/polygon-contains-point/issues
est-ce aussi travailler pour geopoint les coordonnées de carte?
oui, il sera
OriginalL'auteur sromku
Vous pouvez utiliser Google Maps PolyUtil:
OriginalL'auteur fnieto - Fernando Nieto
Voici comment je l'ai fait dans Android.
Il est basé sur le programme java (ray algorithme) :
https://gis.stackexchange.com/questions/42879/check-if-lat-long-point-is-within-a-set-of-polygons-using-google-maps/46720#46720
est-ce de travailler?
Son travail ... Merci ylag 🙂
OriginalL'auteur ylag75
Désolé @sromku j'ai demandé à mon auto (je n'ai jamais utilisé ce genre de choses)
Voilà comment j'ai résolu si quelqu'un a la même question
OriginalL'auteur Shudy