ios mkmapview ios6 mapkit mkoverlay

Problemas de rendimiento con MapKit en iOS6



mkmapview mkoverlay (2)

Puedes intentar combinar todas tus superposiciones en una sola. Esto puede aumentar drásticamente el rendimiento.

La idea es crear una superposición con un cuadro delimitador que abarque todos sus polígonos. De esta forma siempre se llamará a su mapView: viewForOverlay . Crea una propiedad para tu superposición que contenga todos tus polígonos. Luego, en el método drawMapRect: de su vista de superposición, pruebe todos sus polígonos para la intersección con mapRect y dibuje si es necesario. Esto es importante ya que no desea dibujar polígonos que estén fuera de la pantalla.

Esta estrategia se basa en los propios proyectos de ejemplo de MapKit de Apple. Eche un vistazo a HazardMap para ver un ejemplo de cómo dibujar varios objetos en una sola MKOverlayView y consulte BreadCrumb para ver un ejemplo de cómo probar eficientemente los polígonos para la intersección con su mapRect actual en el método drawMapRect

Después de actualizar a iOS 6, he notado que el rendimiento del servidor disminuye cuando se hace un barrido o acercamiento a un MKMapView con múltiples superposiciones. Una aplicación que creé tiene aproximadamente 600 superposiciones de polígonos de varios colores, y se ejecutó sin retardo (incluso en dispositivos iOS más antiguos) en iOS 5, ahora se ejecuta extremadamente lento (al hacer zoom y paneo) en iOS 6, incluso en los últimos dispositivos.

Mi corazonada es que esto se debe al hecho de que el dispositivo tiene que crear dinámicamente el mapa (ya que se basa en el vector) en lugar de solo mostrar mosaicos en la pantalla.

¿Alguien ha tenido alguna idea para reducir el retraso experimentado cuando se hace una panorámica o se hace zoom en el mapa?

Alguna información adicional, esta baja velocidad de cuadros también ocurre mientras se enfocan o panoramizan las áreas donde las superposiciones no se muestran en la pantalla, por lo que no tiene que ver con la creación de las superposiciones a medida que aparecen en pantalla.


Tengo una demostración de tecnología MapKit minimalista y está retrasada notablemente ya que la ejecuto en un iPad 3 con iOS6. La creación de perfiles revela que está vinculado a la CPU, pero solo el 0.2% proviene de mi propio código. Los principales culpables en mi caso son los caminos de representación, seguidos por las etiquetas de representación, ambas hechas por MapKit. Estoy mostrando el centro de San Francisco en una escala de 5 km, por lo que hay muchos caminos y etiquetas para representar.

Entonces la moraleja de la historia es: los mapas iOS6 son LENTOS. Sin embargo, no puedo decirles cómo se compara con iOS5 o con un iPad 2. Pero está rezagado, y apenas estoy haciendo mi propio trabajo.

PD: Abre Instrumentos y usa el Time Profiler. Haga una grabación + profundizar para encontrar a sus culpables. Luego marque ''ocultar bibliotecas del sistema'' para averiguar cuánto del retraso es su responsabilidad frente a la de MapKit. Luego optimice solo según sea necesario.