Не работают карты Яндекс в android webView
Доброго времени суток!
Я делаю простое веб-приложение на андроид. На одной из страниц сайта, который используется в приложении есть встроенная Яндекс карта. На устройствах с Андроид 4 и ниже, карта не отображается. Опытным путем выяснил, что не срабатывает событие ymaps.ready, в которое передается функция init, создающая экземпляр карты. Если вызвать функцию init по таймауту, то возникает ошибка "Uncaught TypeError: undefined is not a function" в строке myMap = new ymaps.Mapто есть приложение не видит объект ymaps, хотя библиотека яндекс загружается. Пробовал загружать библиотеку яндекс на свой сервер - тот же результат. Все нужные разрешения в приложении выставлены. setJavaScriptEnabled = true. В андроид 6 и выше карты отображаются. В чем может быть дело? Ниже код подключения карты: var myMap; // Дождёмся загрузки API и готовности DOM. ymaps.ready(init); setTimeout(init, 5000); function init () { alert('init'); // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map"). myMap = new ymaps.Map('map', { // При инициализации карты обязательно нужно указать // её центр и коэффициент масштабирования. center: [55.76, 37.64], // Москва zoom: 10 }, { searchControlProvider: 'yandex#search' }); document.getElementById('destroyButton').onclick = function () { // Для уничтожения используется метод destroy. myMap.destroy(); }; } <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Примеры. Размещение карты на странице.</title> <script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> <script src="custom.js" type="text/javascript"></script> <style> body, html { padding: 0; margin: 0; width: 100%; height: 100%; } #map { width: 100%; height: 90%; } </style> </head> <body> <div id="map"></div> <input type="button" id="destroyButton" value="Удалить карту"/> </body> </html> |
Просто для посмотреть
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Примеры. Размещение карты на странице.</title> <script src="https://api-maps.yandex.ru/2.1.59/?lang=ru_RU" type="text/javascript"></script> <script type="text/javascript"> var myMap; alert(JSON.stringify(navigator.userAgent)); // Дождёмся загрузки API и готовности DOM. ymaps.ready(init); // setTimeout(init, 5000); function init () { alert('init'); // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map"). myMap = new ymaps.Map('map', { // При инициализации карты обязательно нужно указать // её центр и коэффициент масштабирования. center: [55.76, 37.64], // Москва zoom: 10 }, { searchControlProvider: 'yandex#search' }); document.getElementById('destroyButton').onclick = function () { // Для уничтожения используется метод destroy. myMap.destroy(); }; } </script> <style> body, html { padding: 0; margin: 0; width: 100%; height: 100%; } #map { width: 100%; height: 90%; } </style> </head> <body> <div id="map"></div> <input type="button" id="destroyButton" value="Удалить карту"/> </body> </html> |
На смартфоне с Андроид 5 в Хроме работает, в штатном браузере - нет.
Что такое штатный браузер - ???? Может, по ошибке предлагать ставить Хром? |
Типа на Андроид больше нет встроенного браузера вроде как. У меня с последней прошивкой на MIUI от XIAOMI есть только Chrome.
|
xShift,
Речь как раз о проблемах со старым Андроидом, где есть штатный браузер. |
Спасибо всем за ответы! Я спрашивал про отображение в компоненте webView приложения. Вопрос решился заменой яндекс API версии 2.1 на 2.1.oldie.1
|
andru86,
Штатному браузеру Андроид 5 не помогло - см. пост 2. |
Часовой пояс GMT +3, время: 14:19. |