Mam więc aplikację, która wyznacza granice,polilinia, koła itp. nad otwartą mapą ekranową. Przechowuję listę rysunków, gdy mapa jest unieważniona Ieruję tę listę, przerysowując każdy element w ramach metody onDraw nakładki. Działa to dobrze, dopóki moja liczba rysunków nie osiągnie około 300+. Potem pojawia się poważne opóźnienie interfejsu użytkownika.
Szukam skutecznego sposobu, aby to zrobić?
Zrobiłem rysowanie pamięci podręcznej bitmapy w aplikacji do rysowania na tablicy. Chociaż to nie zadziała w tej sytuacji, ponieważ rzut w tle może się zmienić, więc rysunek musi się przesunąć.
Odpowiedzi:
2 dla odpowiedzi № 1Oszczędzałem GeoPoints, a potem robiłem coś ciężkiegokonwersja do „MapView Point” podczas każdego przerysowania. Okazuje się, że rzut ma „punkt pośredni”, który można zapisać i łatwo rzutować na „punkt mapView”. Ciężka część obliczeniowa została wykonana tylko raz.
Kroki
- Motion Event (x, y) do GeoPoint przy użyciu (fromPixels)
- GeoPoint do wartości pośredniej przy użyciu (toMapPixelsProjected)
- Buforuj wartości pośrednie dla wyświetlania rysunku
- OnDraw -> wartości pośrednie do ekranowania współrzędnych za pomocą (toMapPixelsTranslated)