Estamos desarrollando una aplicación Híbrida y estamos utilizando google map API en nuestra aplicación. Cuando estamos tratando de carga de 2000 marcadores de datos en el mapa, luego se estrelló. Mapa no es llegar se estrelló en IOS6, IOS5. Es lo que está sucediendo sólo en IOS7. Es allí cualquier memoria relacionada con el cambio hecho para ios7 aplicación.

  • Tener el mismo problema. El accidente se produce también en Chrome (iOS7). Estoy usando ‘markerwithlabel.js’ code.google.com/p/google-maps-utility-library-v3/wiki/Libraries y se preguntaba si eso puede ser parte del problema.
  • Vivienda búsquedas con Google Maps habilitado en el Craigslist sitio móvil se bloquea Safari en iOS7.
  • sí. yo uso el infobox plugin para mostrar las etiquetas de los marcadores y esta es la razón por la que se bloquea en iOS7. el infobox plugin seguramente va a utilizar la misma api para hacer eso.
  • Creo que está relacionado con un problema que estoy experimentando. Mi web app se bloquea debido a la memoria utilizada por las imágenes no se encuentra debidamente publicado. Consulte stackoverflow.com/questions/19150961/…
  • Tenemos el mismo problema – increíble la diferencia entre iOS 6 y 7. Hemos hecho muchas de las sugerencias que aparecen a continuación, pero todavía se siente la aplicación siempre está empujando mucho límite inferior. Cualquier sugerencia se agradece enormemente.
InformationsquelleAutor user2771801 | 2013-09-12

11 Comentarios

  1. 13

    Como se dijo anteriormente iOS7 es más estricto con el uso de la memoria.
    Este comportamiento se produce en otros navegadores como Chrome, por lo que cuando una aplicación de alcanzar el límite superior en el uso de la memoria, el accidente se aparece.

    Me han aislado dos casos de prueba utilizando sólo Gmaps API de javascript y jQuery:

    Pruebas con 100 marcadores: Todo está bien

    http://jsfiddle.net/edfFq/6/embedded/result

    Probando con 3000 marcadores: un Accidente se produce

    http://jsfiddle.net/edfFq/7/embedded/result/

    $(document).ready(function () {
        var map;
        var centerPosition = new google.maps.LatLng(40.747688, -74.004142);
    
    
        var options = {
            zoom: 2,
            center: centerPosition,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map($('#map')[0], options);
    
    
        for (var i=0;i<2800;i++){        
          var position = new google.maps.LatLng(40*Math.random(),-74*Math.random());
          var marker = new google.maps.Marker({
                position: position,
                map: map           
            });
        }
    });
    

    Usted puede conseguir la caída con un menor número de marcadores si su mapa de usos: etiquetas, iconos personalizados y grupos.

  2. 8

    De haber experimentado problemas similares con Google Maps he intentado aislar un mínimo de caso de prueba. Quería ver si esta fue quizás la más general de la gestión de la memoria cuestión.

    Este código solo almacena datos aleatorios en una matriz de accidentes de Safari en IOS 7 en un iPad mini de 16 gb:

    function randomString(length, chars) {
        var result = '';
        for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
        return result;
    }
    
    var arr = []
    for (var i=0;i<5000;i++) {
        //one character is two bytes in JavaScript, so 512 chars is 1Kb:
        o = randomString(512, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
        arr.push(o);
    }
    

    Usted puede tratar de esta prueba con su propio navegador, vaya http://vici.org/memtest.html . La secuencia de comandos en esa página se trate de la reclamación de 50 mb de memoria, en pasos de 1 mb. La secuencia de comandos muestra una ejecución de contador para ver qué tan bien su navegador realiza y cuando se bloquea (si lo hace). El script almacena los resultados para cada ip /agente de usuario combinación en una base de datos para poder extraer algunas conclusiones.

    En promedio, IOS 6 (n=12) permite una secuencia de comandos para la demanda sobre los 12 mb. IOS 7 (n=47) permite una secuencia de comandos para reclamar alrededor de 15 Mb. Estos no son difíciles de límites. Por tanto, establece el estándar devation era bastante alto, ~12 Mb. En el Xcode emulador de Safari no incluso accidente en todos (reivindicación de los 50Mb, probablemente debido a que se tiene acceso a más memoria RAM).

    Así que podemos concluir que el problema no está causado por IOS 7 deja menos memoria para Safari. El problema parece ser, como fue sugerido por Philipp Kühn, que -en algunos casos específicos? – Safari consume significativamente más memoria de la que se hizo en IOS 6. Una pista sobre la causa se puede encontrar en la https://discussions.apple.com/message/23837361#23837361 donde una página con 200 divs y el siguiente CSS

    div {
      -webkit-backface-visibility: hidden;
    }
    

    accidentes de safari.

    Parece que usando el Folleto de la biblioteca evita los mapas problema (ver https://code.google.com/p/gmaps-api-issues/issues/detail?id= y https://github.com/Leaflet/Leaflet/pull/2149) sin embargo Folleto de burlar la poca memoria se bloquea y no por cambios en el css pero en el javascript nivel. Folleto de ahora evita frases como

    context = this
    

    Esto sugeriría que Safari no limpiar objetos no utilizados. Mientras Apple no soluciona Safari, tal vez Google podría hacer cambios similares a lo que el Prospecto chicos han hecho?

    Por el momento Apple ha comunicado de IOS7.1 que no resuelve totalmente el falla, pero, sin duda, hace a ellos les ocurren a menudo.

  3. 7

    Tenemos una aplicación web, que chrashes también con muchos marcadores en iOS7. Así que tomamos un vistazo más de cerca a la memoria el iPad de uso.

    iPad mini (y iPad3) con iOS7:

    El uso de la memoria es cada vez más altas y entre 300-400MB el navegador chrashes.

    iPad 3 con iOS6

    El uso de la memoria es sobre 200MB y todo está bien.

    1 iPad con iOS5

    El uso de la memoria es sólo acerca de 100MB y todo está bien.

    Conclusión

    Así que esto es NO sólo un límite de memoria – sin duda es un error enorme en el iOS safari! Y hasta ahora (iOS 7.0.3) este no es fijo.

    • Hay una razón por la que un sitio web para móviles de accidente en IOS 7.0.3 para el iPad, pero NO para el iPhone? Yo era capaz de conseguir que el sitio web móvil de iPhone para trabajar por la prevención de marcadores adicionales de carga, sino que la misma estrategia no funciona para el iPad. Es dependiente del dispositivo (como, demasiadas aplicaciones abiertas), o el iPad tiene más restricciones que el iPhone?
    • Hoy iOS 7.0.4 fue puesto en libertad. Se puede comprobar si el problema todavía existe?
    • El problema todavía existe :/
    • Y con iOS 7.1 beta el problema es que aún existen. Es tan molesto…
  4. 4

    ¡Buenas noticias! nos cambiamos de nuestras aplicaciones de marco de google para repartir volantes y funciona de maravilla, no estrellarse, se comprobó la depuración y funciona extremadamente alta de memoria, pero nunca se bloquea. Si usted ya no tiene que ir con el Prospecto, es totalmente funciona en iOS 7,

  5. 3

    Nuestra aplicación se comportó de la misma forma como los usuarios de arriba; todo funcionaba bien antes de iOS 7, sin embargo, se estrelló después. El problema, de hecho, no parece ser un problema de memoria. Usted puede verificar comprobando el informe de accidente de registros en su dispositivo.

    Como nuestra aplicación fue esencial para un cliente, que no podía sentarse y esperar para una revisión de Apple. En nuestro caso, la solución implica tres estrategias específicas:

    1. Javascript optimización de código. Nuestra aplicación fue desarrollada muy
      rápidamente y se apartó de un prototipo en un sistema de trabajo sin
      amplia código de planificación. En nuestro sistema, hemos sido capaces de darse cuenta de
      memoria significativa de las ganancias mediante la optimización del código. Esto significó la eliminación de
      variables sin usar; echa un vistazo si quieres pasar a almacenar todos los marcadores
      en un preliminar de la matriz como una respuesta de la base de datos. Eliminar
      estas viejas matrices y variables sin usar una vez que todo está cargado
      con éxito. Además, considere la posibilidad de limitar incluidas las bibliotecas, y
      emplear común de Javascript /jQuery mejor optimización de las prácticas.

    2. Vacío ventanas de información. La próxima memoria de la estrategia de ahorro de vino de NO
      pre-carga de cada mp de la información en la pantalla de la ventana con los datos. Se despojó de cada ventana de información
      desnudo, excepto por un vacío div con ID único, que luego sería
      carga de forma asíncrona en el clic a través de Ajax. Los ahorros de muchos
      miles de marcadores, cuando se tomen todos los innecesarios info
      los datos de la ventana de salida, eran bastante grandes. Nos carga de alrededor de 10.000
      los marcadores. La experiencia del usuario no se ve afectado en gran medida ya sea porque
      la diferencia de pre-carga y Ajax tiempos de carga era insignificante.

    3. La mayor diferencia, y tal vez una pista en cuanto a que el iOS 7
      pérdida de memoria mentiras, vino de simplemente reducir el número de marcadores
      muestra en la pantalla a la vez. Cada solicitud será diferente,
      pero hemos descubierto que la reducción de los resultados a 500 marcadores o menos
      resultó en un sistema estable sin que se caiga. Nuestra estrategia fue
      simplemente para cargar y borrar la matriz de visibles los marcadores basados en el usuario
      comportamiento. Por ejemplo, si el usuario particular de selección de filtro
      traducido en más de 500 marcadores, se limitan simplemente a los resultados
      a partir de la base de datos. Visualmente, el conjunto de resultados todavía parece grande, y
      no es muy diferente, a partir de una experiencia de usuario de la perspectiva, de
      ver a muchos miles de marcadores. En ambas situaciones, el usuario
      todavía es necesario filtrar y restringir los resultados para llegar a un
      manejable resultado. En nuestro caso, el usuario no se de cuenta de la
      límite.

    Esto hizo que el truco! Nuestra aplicación es ahora ningún accidente. Teniendo en cuenta la cantidad de tiempo (por no hablar de la frustración!) este tema me hizo, espero que estas estrategias le dará un punto de partida para conseguir que la aplicación de copia de seguridad y de trabajo. Siéntase libre de ponerse en contacto si usted quería algo un poco más específico. Buena suerte!

    • ¿Cómo verificar el informe de accidente de los registros?
  6. 0

    Creo IOS7 tiene un límite de memoria de 5Mb (duración de la batería), que solía ser de 50 mb o algo así. Ya que la tapa es limitado con el sistema operativo, por lo que no importa si usted está usando Chrome, Safari u otros navegadores, se estrellará si se excede.

    he probado mi límite de recepción de datos a 20 de SQL, y funciona en todos los navegadores en mi iphone (pad).

  7. 0

    Yo tenía el mismo problema y probado un par de cosas. He desactivado la animación cuando los marcadores se establecen (yo tenía alrededor de 30 se añadió a la vez) y parece que no se cuelga nada más ahora. Espero que ayude.

    • hmm, tengo entre 500 y 2000 marcadores se añaden todo a la vez y un montón de cálculos que ahí sucede así. Safari no se bloquea en que (aunque es un poco lento), pero se bloquea cuando me zoom in y zoom out muy rápido
  8. 0

    Tenemos el mismo problema con las Etiquetas en el mapa de google. Cuando el zoom del mapa en la aplicación de llegar se estrelló. Esto empezó a suceder después de la actualización a IOS 7. Estoy tratando de opciones diferentes, como quitar y agregar la etiqueta en eventos como el «arrastre» y «ociosos». Este código funciona, pero todavía accidente se produzca. pero con menos frecuencia. Espero que alguien podría tener una solución mejor para esto.

        google.maps.event.addListener(Map.gmap, 'drag', function () {
                $('.arrowSite_box').remove(); //remove labels
        });
    
        google.maps.event.addListener(Map.gmap, 'idle', function () {
            loadMarkers(results); //add labels
        });
    
  9. 0

    Heyy… yo también tenía que hacer frente el problema similar. Así, traté de esto:

    He desactivado la aplicación almacena en caché en «didReceiveMemoryWarning» método de mi punto de vista controlador y plugins personalizados y establecer las propiedades y variables a cero en «onMemoryWarning» método de CDVPlugin clase. Y este enfoque hizo el trabajo para mí. No estoy recibiendo ningún accidente como el de ahora.
    Espero que esto ayude.

  10. 0

    Parece estar fijo en iOS 7.1

    Ayer en iOS 7.0.6, mi mapa de accidente Mobile Safari con más de 3.000 marcadores. Hoy después de actualizar mi iPad, puedo cargar un mapa en Mobile Safari, con más de 15.000 marcadores.

Dejar respuesta

Please enter your comment!
Please enter your name here