Almacenamiento en caché de superposiciones al redondear rectángulos de coordenadas – ¿cómo?

Tengo un mapa con superposiciones que quiero poner en caché – en cada lugar que el usuario visitó en el mapa (que es un área de rectángulo) – compruebo si tengo una memoria caché de las superposiciones que residen en este rectángulo.

Con el fin de mejorar el almacenamiento en caché (por lo que si el usuario estaba previamente en el mismo rectángulo, excepto que ahora está a pocos metros del rectángulo anterior) – Quiero "redondear" las coordenadas.

De esta manera, cada vez que el usuario está en un rectángulo – comprobar si este rectángulo es similar a los rectángulos previamente en caché y si es así, traigo el resultado almacenado en caché.

Además, si el usuario se aleja y su rectángulo está contenido dentro de un rectángulo más grande (previamente almacenado en caché), también puedo usar el rectángulo en caché.

Alguna sugerencia ?

Si sólo está viendo cómo agrupar las coordenadas, decida la máxima diferencia entre las coordenadas en xyy o latitud y longitud que desee. Entonces hay dos maneras que usted puede ir alrededor de agruparlas. La primera es más fácil, pero será lenta si tienes muchos puntos.

Digamos que tenemos una estructura de datos llamada cachedPoints, una distancia máxima entre puntos relacionados llamados maxdistance y un nuevo punto que estamos tratando de comprobar para ver si está cerca del otro punto llamado.

for each cachedPoint in cachedPoints { if (point.x - cachedPoint.x < maxdistance) { if (point.y - cachedPoint.y < maxdistance) { cachedPoint.incrementvisits(); } } } 

La otra manera es usar una estructura de datos ordenada por x o latitud, y luego buscar para ver si hay un punto en caché con una x o una latitud dentro de maxdistance de punto, luego compruebe la y o longtitude. Sería un poco más rápido, pero se necesitaría algún tipo de hash para implementar y agrega un montón de complejidad que no necesitas.

Esperemos que eso es lo que estás pidiendo.

Si configura una estructura de datos como:

 var a = { 'scales' : [50, 100, 200, 400, 1000], 'cachedRects': [{'location': 'rect-large-1234-5678.png', x: 1234, y: 5678, scale: 3} {'location': 'rect-small-1240-5685.png', x: 1240, y: 5685, scale: 1} ] } 

Puede utilizar la función de módulo para hacer esto:

 var currentx = GetCurrentX(); var currenty = GetCurrentY(); var currentScale = GetCurrentScale(); var rectFound = false; foreach(rect in a.cachedRects) { if (rect.scale === currentScale && currentx % a.scales[currentScale] === rect.x && currenty % a.scales[currentScale] === rect.y) { rectFound = true; useOverlay(rect); break; } } if(!rectFound) { //could loop again for a larger rectangle of a lower scale. } 

Lo anterior puede o no resultar ser válido JS – No he intentado ejecutarlo. Espero que tengas la esencia, de todos modos.

Hey Usted puede agregar marcador en Google mapa v2 en android.

Aquí le doy código para añadir marcador

  MarkerOptions mOpt = new MarkerOptions(); mOpt.position(new LatLng(userHstry.getMyLatlng().latitude, userHstry.getMyLatlng().longitude)); // map.clear(); mOpt.title("Address : " + userHstry.getAddress()).snippet("Date : " + userHstry.getDate() + " , Time : " + userHstry.getTime()); map.addMarker(mOpt); 
  • Barra de navegación translúcida (Android 4.4) - Mostrar contenido debajo
  • ¿Cómo puedo dibujar una flecha que muestre la dirección de manejo en MapView?
  • Android ViewPager: fragmentos superpuestos cuando el ancho de página se establece en 90%
  • Eliminar todas las superposiciones
  • ICS teclado de vuelta, los botones de inicio no tomar contacto cuando se abre en la superposición
  • Teclado sobre EditText en segundo clic
  • Android: trazado de dibujo como superposición en MapView
  • Color de relieve de superposición de círculo no dibujado siempre en Google Maps v2
  • Dibujar una superposición similar a MapsApp
  • ¿Cómo expandir el marcador de superposición en Google Maps?
  • Mostrar un bus móvil en google maps api v2 android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.