Estoy desarrollando una aplicación de Android basada en la ubicación que se ocupa de muchos elementos superpuestos.Cómo actualizar dinámicamente un overlayitem específico
Antecedentes: Hay bastantes entidades que quiero mostrar en un mapa. Las coordenadas de las entidades cambian en tiempo real a medida que cambia su ubicación. En correspondencia con la ubicación actualizada, las entidades se actualizarán en el mapa. Las entidades pueden crecer a un gran número.
Implementación Tengo dos superposiciones. Uno para MyLocationOverlay para mostrar la ubicación del usuario y el otro, una subclase ItemizedOverlay con todas las entidades que necesito mostrar en el mapa.
El problema Cada vez que se cambia la ubicación de una entidad, es necesario actualizar la superposición correspondiente. El problema es que no estoy seguro de cuál es la mejor manera de lograr esto. Tengo estas opciones
Como recibo una ubicación de una entidad en particular, elimino todas las superposiciones del mapa y volver a agregar las plantillas. Uno de los elementos superpuestos ahora se crea con la ubicación actualizada.
List<Overlay> overlays = map.getOverlays(); overlays.removeAll(overlays); overlays.add(new MyOverlay(marker,this));
Creo una Superposición para cada entidad. Lo que significa que crearé 500 superposiciones, cada una con solo un elemento superpuesto. Creé una subclase de clase de superposición y agregué mis propias propiedades para identificar claramente la entidad y crear una para cada una. Cuando llego a la actualización de ubicación de una entidad en particular, repito y obtengo el elemento de superposición específico, lo elimino y agrego uno nuevo con la ubicación actualizada.
No sé cuál es el mejor para usar en cuanto al rendimiento.
me siento eliminación de todo y volver a agregar todas las superposiciones de cada actualización solo lugar (que puede ser muy a menudo) de toda entidad única se convierte en toda una sobrecarga cuando el número de entidades se convierten en más de 500 o 1000.
Al mismo tiempo, iterar a través del mismo número de entidades también puede ser igual a la sobrecarga.
Se agradecerá cualquier consejo sobre cuál elegir o una mejor manera de implementar esto.
/Andy
¿Así que sugieres que crees una única clase de superposición personalizada y que todas mis entidades estén dibujadas sobre eso? ¿Cuál tendrá un mejor rendimiento? Una clase de superposición personalizada como ha sugerido con las 500 entidades o clases de superposición personalizadas similares, una para cada entidad (habrá 500 objetos de clase de superposición personalizada) – andy
Creo que no hay una respuesta definitiva desde eso depende de la implementación de la clase de superposición personalizada. Si quería estar seguro del rendimiento, implementaría un caso de prueba simple para estas dos evaluaciones y vería cuál de ellas tiene el mejor rendimiento. – Angelo