Mam MapView, że wyświetlam "użyteczny promień" (myślę o dokładności współrzędnych). Używanie 's Projection' s metersToEquatorPixels, co jest wprawdzie tylko dla odległości równikowej) nie daje mi wystarczająco dokładnej odległości (w pikselach). Jak byś to obliczył, gdybyś chciał wyświetlić okrąg wokół swojej współrzędnej, z podanym promieniem?Jak obliczyć promień wokół punktu w Android MapView?
Odpowiedz
Mapy Google używają numeru Mercator projection. Oznacza to, że im dalej dostaniesz się od równika, tym bardziej zniekształcone stają się odległości. Według this discussion, właściwy sposób przekonwertować na dystansach jest coś takiego:
public static int metersToRadius(float meters, MapView map, double latitude) {
return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));
}
Dziękuję za odpowiedź. Ale miałem pytanie dotyczące tego równania. Czy to równanie jest wystarczająco ciężkie, aby spowolnić działanie aplikacji? Po prostu ciekawy. – Ahmed
Jedyna potencjalnie czasochłonna część formuły to Math.cos(). Możesz użyć funkcji android.util.FloatMath.cos(), aby przyspieszyć działanie lub nawet zachować tabelę wstępnie obliczonych czynników, np. za każdy pełny stopień. Następnie możesz po prostu powiedzieć return (int) (map.getProjection(). MetersToEquatorPixels (metry) * współczynnik [(int) szerokość geograficzna). – Ridcully
projection.toPixels(GeoP, pt);
float radius = projection.metersToEquatorPixels(50);
Spróbuj i zobacz ... Używałem go na moim MapRadius i wydaje się działać
Jeśli zobaczysz moją odpowiedź, zobaczysz dokładnie, dlaczego to nie zadziała we wszystkich przypadkach –
mMap.addCircle(
new CircleOptions().center(
new LatLng(
bounds.getCenter().latitude,
bounds.getCenter().longitude
)
)
.radius(50000)
.strokeWidth(0f)
.fillColor(0x550000FF)
);
Odpowiedź wymaga sformatowania i dodaje trochę więcej kontekstu na temat działania twojego kodu i jak rozwiązuje problem OP! – abhiarora
- 1. Obracanie punktu wokół innego punktu
- 2. Jak dodać okrąg jako promień wokół adnotacji
- 3. MapView v2 zachowuje kontekst wokół
- 4. Obracanie prostokąta wokół punktu
- 5. Obracanie punktu wokół punktu za pomocą OpenCV
- 6. Android, Jak mogę obrócić strzałkę (obraz) wokół ustalonego punktu?
- 7. Jak mogę niezawodnie obracać obraz wokół punktu?
- 8. Obracanie obiektów wokół stałego punktu w OpenGL
- 9. AS3 Obróć obiekt wokół jego punktu środkowego.
- 10. Jednoetapowa transformacja afiniczna do obrotu wokół punktu?
- 11. C++ Obracanie wektor wokół pewnego punktu
- 12. Właściwa trygonometria do obracania punktu wokół źródła
- 13. rysowanie okręgu o promieniu R wokół punktu
- 14. Przenoszenie ikon na Android MapView
- 15. Powiększenie wydarzeń, które działają w Android Mapview
- 16. MapView w Fragment (Android 4.0 lub nowszy)
- 17. Jak obliczyć odległość od punktu do segmentu linii, na kuli?
- 18. Polilinia Android - Dodawanie punktu według punktu
- 19. three.js - w jaki sposób mogę obrócić cylinder wokół określonego punktu?
- 20. Jak narysować tekst z obramowaniem na MapView w systemie Android?
- 21. Jak uzyskać promień z widocznego obszaru MKmapview?
- 22. Jak utworzyć ramkę wokół systemu Android LinearLayout?
- 23. Google Maps Android MapView v2: wyłączanie powiększania
- 24. Android: dodanie obramowania wokół TextView
- 25. Programowany Android MapView v2 nie jest wyświetlany
- 26. Należy użyć MapView lub MapFragment
- 27. Python OpenCV obraca obraz o X stopni wokół określonego punktu
- 28. jak znaleźć k-najbliższego sąsiada punktu w zestawie punktu
- 29. Jak obliczyć wysokość telefonu Android z poziomu
- 30. Jak wykryć, czy Android MapView został przesunięty lub powiększony?
Można to również prawdopodobnie stwierdzić jako: Mam współrzędne GPS i odległość, w jaki sposób mogę narysować okrąg, który obejmuje promień z punktu GPS? –
Nie jestem pewien, czy rozumiem problem - co masz na myśli mówiąc, że nie zapewnia wystarczająco dokładnego dystansu? To, co miałeś na myśli to powiedzieć 100m, ale pokazuje tylko krąg na 50m czy coś w tym stylu? –
Tak. Jest znacznie za dużo. –