Я создаю мобильный сервис HTML5, где я отображаю полигональные маркеры на изображении карты.Я анимирую маркеры, рисуя их, а затем применяя анимацию CSS3.
Это был частичный успех.Такие устройства, как Android Galaxy S, отображают анимацию плавно, а iPod второго поколения - нет.Оба имеют браузер WebKit с почти одинаковым набором функций.В другом - 500 МГц GPU 64 МБ памяти, в другом - 1 ГГц ЦП и 700 МБ памяти.
Проблема в том, как разделить устройства на категории низкого и высокого класса.Это больше похоже на вопрос наличия памяти и процессора, и эти два факта никогда не раскрываются в Javascript (что отстой).
Можете ли вы легко получить какое-либо измерение скорости рендеринга для Javascript?
Любые предварительно собранные таблицы, в которых указывается процессор, память и состояние ускорения устройства на основе пользовательского агента?
В настоящее время я добавил простую эвристику, пытаясьопределить размер маркера и всегда прибегать к неанимированному прямоугольнику на мобильных устройствах.Тем не менее, это означает, что многие мобильные устройства будут пропускать bling bling, который они могут легко сделать
var pixelAreaThreshold = 200*200;
var area = (this.bounds[1][0] - this.bounds[0][0]) * (this.bounds[1][1] - this.bounds[0][1]);
if(area > pixelAreaThreshold && isMobile()) {
// <canvas> is very big and may slow down mobile devices
// (iPod)
drawUsingCanvas = false;
}
var marker;
if(drawUsingCanvas) {
// Go for animated polygon if the polygon is small,
// or if we are using a desktop browser
marker = this.drawPolyCanvas(canvas, context)
marker.addClass("room-marker-animated");
} else {
marker = this.drawRectangle();
}