Wie wird die Entfernung von 1 Meter zu Pixel geändert?

8

Wenn ich eine Android-Kartenanwendung entwickle, möchte ich einen Kreis auf der Karte zeichnen, dessen Radius 1 Meter beträgt. Wie Sie wissen, kann ich nicht 1 Meter direkt zeichnen, ich sollte 1 Meter auf den Abstand von zwei Pixeln je nach Zoomstufe konvertieren. Wie kann ich es konvertieren, gibt es etwas API, das ich verwenden kann.

Canvas.draw (x, y, radius), welchen Wert soll ich dieser Methode zuweisen?

    
Chris 02.08.2010, 05:01
quelle

5 Antworten

9

Wenn Ihre Karte Google Maps ist, wird die Mercator-Projektion verwendet. Sie müssen diese für die Konvertierung verwenden. In der Mercator-Projektion variiert die Entfernung, die ein Pixel in Metern anzeigt, mit dem Breitengrad. Daher ist der Breitengrad wichtig, wenn ein Meter eine sehr kleine Entfernung im Vergleich zum Erdradius ist.

Alle folgenden Beispiele sind Javascript, daher müssen Sie sie möglicherweise übersetzen.

Hier ist eine allgemeine Erklärung des Koordinatensystems:

Ссылка

Dieses Beispiel enthält ein MercatorProjection-Objekt, das die Methoden fromLatLngToPoint () und fromPointToLatLng () enthält:

Ссылка

Nachdem Sie Ihre (x, y) in (lat, lon) konvertiert haben, zeichnen Sie so einen Kreis:

%Vor%

Diese beiden Mashups zeichnen einen Kreis mit einem bestimmten Radius auf der Erdoberfläche:

Ссылка

Ссылка

Wenn Sie die Projektion ignorieren, verwenden Sie kartesische Koordinaten und zeichnen einfach den Kreis mit dem Satz Pythagoras:

Ссылка

    
Marcelo 02.08.2010 08:35
quelle
8

Sehen Sie sich die Projektion Objekt in der API. Es hat eine Methode namens MeterToEquatorPixels (). Angesichts der Beschreibung in der API könnte es nur entlang des Äquators korrekt sein, aber ich dachte, es wäre erwähnenswert, falls die Genauigkeit für Sie kein Problem wäre.

Dies ist der Weg, dies innerhalb der Zeichenmethode Ihrer Überlagerung zu verwenden, wenn Sie den Radius in Metern und den Längen- und Breitengrad angeben, an dem Sie den Kreis zeichnen möchten:

%Vor%     
SilithCrowe 24.11.2010 18:55
quelle
3

Drei Fragen, die du stellen musst 1- Wie groß ist deine Karte?  2- Was ist Ihre Zoomstufe? 3- Wie groß ist dein Bildschirm

Lassen Sie uns annehmen, dass die Karte das gleiche Seitenverhältnis wie Ihr Bildschirm hat (wenn nicht, dann müssen Sie sich Gedanken darüber machen, wie Sie beschneiden (vertikal oder horizontal) oder wie Sie strecken und dann Ihre Antwort auf 1 ändern)

Sobald Sie die Antwort 1 und 3 haben, können Sie das Verhältnis zwischen Metern und Pixeln im Fall von 100% Zoom berechnen, so dass Sie ein Pixel pro Meter haben

Als nächstes müssen Sie einen Zoomfaktor beibehalten (z. B. Zoom in doppelte Größe ist 200%)

Ihr Aufruf zum Zeichnen des Kreises wird so aussehen

%Vor%     
hhafez 02.08.2010 05:40
quelle
2
%Vor%     
criss 15.04.2011 13:19
quelle
1

Sie können die Zoomstufe für den gewünschten Radius berechnen:

Zuerst müssen wir die Bildschirmbreite des Telefons berechnen. Bei Zoomstufe 1 ist der Äquator der Erde 256 Pixel lang und jede nachfolgende Zoomstufe verdoppelt die Anzahl der Pixel, die benötigt werden, um den Erdäquator darzustellen. Die folgende Funktion gibt die Zoomstufe zurück, bei der der Bildschirm eine Fläche von 1 km Breite anzeigt.

%Vor%     
Parth mehta 29.02.2012 06:51
quelle

Tags und Links