Ich habe ein WPF-Benutzersteuerelement, mit dem der Benutzer ein Rechteck auf dem Kartenbereich zeichnen kann, um einen Bereich zum Herunterladen von Hintergrundbild-Kacheln von einem Webdienst zu definieren. Die Fliesen sind in Lat lang 1x1 Grad.Herunterladen von sich überschneidenden, aber nicht duplizierenden Karten-Download-Kacheln aus einer Liste von Punkten?
Dies funktioniert, ich gebe einen Punkt als Parameter & herunterladen Sie die Kachel. Jedoch versuche ich nun, eine List<Point>
für jede Ecke des benutzerdefinierten Rechtecks & zu übergeben, daher zu bestimmen, welche Kacheln jeden Punkt schneiden. Dies funktioniert in einer Weise verändern jedoch, wenn der Benutzer ein Rechteck vollständig innerhalb einer einzelnen Kachel definiert dann die gleiche Kachel 4 mal heruntergeladen (einmal für jeden Punkt):
ForEach(point in rectanglePointsList)
{
DownloadTile(point);
}
Ich brauche über die Punkte iterieren & festzustellen, ob Lade die folgende Kachel herunter oder nicht. Dieser Code ist dumm zu den Kacheln, ich habe nur die Punktparameter, die ich übergebe. Ein Kollege schlug eine verschachtelte for-Schleife vor, wobei ich die X & Y von jedem Punkt, & max & dann irgendwie feststellen, ob a Die Kachel sollte heruntergeladen werden in dem Wissen, dass die Kacheln immer 1x1 Grad sind. Gibt es einen Algorithmus, um dies zu erreichen? Ich weiß nicht wirklich, wo ich anfangen soll.
List<int>xValuesList = new List<int>();
List<int> yValuesList = new List<int>();
ForEach(point in RectanglePointsList)
{
xValuesList.Add(Convert.ToInt32(point.X);
yValuesList.Add(Convert.ToInt32(point.Y);
}
int maxX = xValuesList.Select(value => value.X).Max();
int maxY = yValuesList.Select(value => value.Y).Max();
//Lost after here...
Wie ist die Indexierung Ihrer Kartenkacheln? Fängt es an der oberen linken Ecke an, d.h. die Kachel bei (0,0) ist bei Länge -180 und Breite 90? – Clemens