2016-07-07 4 views
2

Was ich tun möchte, ist ein Kreis Radius berechnen, mit dem der Benutzer die Karte anzeigt.
Ich habe die Lösung so weit wie folgt geschrieben (was stimmt):Radius des sichtbaren Kartenbenutzers in Google Karte berechnen

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition cameraPosition) { 
      String TAG = AppController.TAG; 
      LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds; 
      LatLng target = cameraPosition.target; 
      LatLng northEast = bounds.northeast; 
      LatLng southEast = bounds.southwest; 
      float[] results1 = new float[1]; 
      float[] results2 = new float[1]; 
      Location.distanceBetween(target.latitude, target.longitude, northEast.latitude, northEast.longitude, results1); 
      Location.distanceBetween(target.latitude, target.longitude, southEast.latitude, southEast.longitude, results2); 
      double distance = results1[0] > results2[0] ? results1[0] : results2[0]; 
      Log.d(TAG, "onCameraChange:" + results1[0] + " " + results2[0]); 
     } 
    }); 

ich hier vor zwei Fragen:
1- Zunächst einmal, warum die distane zwischen dem Zentrum und Nordosten isn Ist der Südwesten gleich?
2- Gibt es eine eingebaute Methode, um das gleiche Ergebnis zu erzielen?

Antwort

0

enter image description here

wie Sie aus der nachstehenden Karte sehen können, die horizontale Linie (Breitengrad) wird kürzer, je weiter man vom Äquator zu bekommen.

auf dem Bildschirm ist die Karte "verzerrt", um die gekrümmte Oberfläche der Erde abzuflachen, mit +/- dem gleichen Längen- und Breitengrad von der Mitte der Ansicht.

Wenn Sie also nicht direkt am Äquator messen, haben Sie leichte Unterschiede im Radius. für kleine Entfernungen ist das vernachlässigbar.

Wenn die Genauigkeit nicht wichtig ist, können Sie versuchen, den kleineren Radius zu verwenden (wenn Sie einen Kreis auf der Ansicht zeichnen möchten, der nicht teilweise ausgeblendet wird) oder den größeren Radius verwenden (wenn Sie Berechnungen für Orte durchführen möchten) innerhalb dieses Zyklus).

+0

Tnx für die Antwort, ich denke, Sie können die zweite Frage nicht beantworten. Aber akzeptierte deine Antwort. – Mehrdad

Verwandte Themen