Umwandeln einer Pixel- in eine Kartenkoordinate

Der Client muss einen Pixel zu einer Position auf der Welt konvertieren können, um eine Karte, die auf Kacheln des Map Tiling-Dienstes basiert, zu verschieben oder zu zoomen. Dazu muss der Client eine affine Umwandlung erstellen, die bei einer angegebenen Koordinate in Pixeln eine Koordinate in der Kachelprojektion zurückgibt. Die Kachelprojektion, die Begrenzungen der zu kachelnden Karte und die Abmessungen einer Kachel müssen bekannt sein. Mit diesen Informationen müssen Sie Folgendes durchführen:

  1. Berechnen Sie die maximale horizontale Anzahl an Kartenkacheln.
  2. Berechnen Sie die maximale vertikale Anzahl an Kartenkacheln.
  3. Berechnen Sie die maximale horizontale Anzahl an Pixeln der Karte.
  4. Berechnen Sie die maximale vertikale Anzahl an Pixeln der Karte.
  5. Erstellen Sie eine affine Umwandlung, die auf den Begrenzungen der Karte und den Begrenzungen der Karte in Pixeln basiert.
  6. Verwenden Sie Ihre Position in Pixeln als Eingabe für die affine Umwandlung. Als Ergebnis erhalten Sie eine Position auf der Welt in der Projektion der Karte.

So führen Sie diese Schritte durch und wandeln einen Pixel in das Koordinatensystem Ihrer Karte um:

  1. Berechnen Sie die maximale horizontale Anzahl an Kartenkacheln mithilfe der folgenden Gleichung: tilesAcross = 2level
  2. Berechnen Sie die maximale vertikale Anzahl an Kartenkacheln mithilfe der folgenden Gleichung: tilesDown = 2level
  3. Berechnen Sie die horizontale Anzahl an Pixeln auf der gesamten Karte mithilfe der folgenden Gleichung: pixelsAcross = tileWidth × tileAcross
  4. Berechnen Sie die vertikale Anzahl an Pixeln auf der gesamten Karte mithilfe der folgenden Gleichung: pixelsDown = tileHeight × tileDown
  5. Mit den Begrenzungen der Karte in der Projektion der Karte und den Begrenzungen der Karte in Pixeln können Sie eine affine Umwandlung von Pixel- zu Kartenkoordinaten konstruieren. Die übergebene Pixelkoordinate muss sich im Pixel-Space der Karte befinden. Möglicherweise ist es nicht ausreichend, direkt eine Pixelkoordinate einer Mausposition auf dem Bildschirm zu übergeben. Beispielsweise müssen Sie eventuell die Mausposition in eine Position im Pixel-Space der Karte konvertieren. Dazu muss die Position der oberen rechten Ecke der Bildsteuerung in Kartenpixeln im Pixel-Space nachverfolgt und der Versatz der Mausposition gegenüber dieser Position ermittelt werden.