Open eugenehr opened 8 years ago
+1, столкнулась с аналогичной проблемой
+1, все еще актуально.
В строке, где формируется loadUrl просто принудительно ставьте протокол: var loadUrl = 'http://api-maps.yandex.ru/' + yaMapSettings.version + '/?load=package.full&lang=' + yaMapSettings.lang + '&coordorder=' + yaMapSettings.order;
И Тулову Гранд Респект!
Ясен пень что ставить. А потом при обновление помнить еще про это...
Так и делаем, но как было сказано выше, при обновлении или новой установке через npm эти изменения теряются.
Похоже что появилась другая проблема:
я так понимаю мне еще нужно править загружаемый скрипт? Я скачал и встроил в код страницы скачиваемый скрипт, добавил где надо http:, ошибка прошла, но и карта не рисуется. В контент полиси доступ вообще ко всему. Что еще нужно сделать чтобы хотябы в эмулятора карта заработала?
Осмелюсь предположить, что используете Google Chrome. Не искал причину, но яндекс.карты не работают в нем. Да и вообще, к примеру, яндекс.диск через раз в хроме работает. Видимо это война....
Как раз в хроме работает отлично, не работает при запуске приложения на телефоне или в эмуляторе андроид.
Failed to load resource - не может загрузить ресурс. Опять предположительно, попробуйте убрать начальный слэш.
Студия отображает ошибку внутри загруженного с яндекса скрипта, напомню что ошибка net::ERR_NAME_NOT_RESOLVED также внутри скрипта есть такое: "services": { "coverage": "https://api-maps.yandex.ru/services/coverage/", "geoxml": "https://api-maps.yandex.ru/services/geoxml/", "route": "https://api-maps.yandex.ru/services/route/", "regions": "https://api-maps.yandex.ru/services/regions/", "geocode": "//geocode-maps.yandex.ru/", "suggest": "//suggest-maps.yandex.ru/", "search": "https://api-maps.yandex.ru/services/search/", "inception": "https://api-maps.yandex.ru/services/inception/" } мне кажется тут снова проблема с file:
Странно, из какого файла этот объект? Тут (https://github.com/tulov/angular-yandex-map/blob/master/example/2.2/ya-map-2.2.js) нет, как и в соседних файлах. Проблема точно в текущей библиотеке?
Смотрим на var loadUrl = 'http://api-maps.yandex.ru/'+yaMapSettings.version+'/?load=package.full&lang=' + yaMapSettings.lang + '&coordorder=' + yaMapSettings.order; потом на функцию var loadScript = function(url, callback)
ya-map-2.2.js это просто загрузчик скрипта с узла яндекса, который уже рисует саму карту
Вы сами ответили на вопрос - это просто загрузчик скрипта с узла яндекса. Может стоит в яндекс написать? Я используют в приложение на Ionic, у меня все работает.
Я тоже пытаюсь сделать это в Ionic.
А каким образом вы разрешили доступ из приложения к апи яндекс?
Так правильно?
<meta http-equiv="Content-Security-Policy" content="default-src 'self' http://*.yandex.ru http://*.yandex.net https://*.yandex.ru https://*.yandex.net data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; ">
Можно посмотреть на ваш код?
В config.xml нужно прописать пару строк
<access origin="*"/>
<allow-intent href="*"/>
а также дождаться ionic.platformReady
и только тогда инициализировать карты.
Работает на iOS WebView и Crosswalk под андройдом
Добавил, все равно в эмуляторе ошибка. Я отображаю карту в отдельном view, т.е. ionic.platformReady мне дожидаться не нужно, т.к. карта начинает грузиться только при открытии нужной страницы. Или нет?
Что еще интересно, пример отсюда https://tech.yandex.com/maps/doc/jsapi/2.1/quick-start/tasks/quick-start-docpage/ в моем приложении вообще не работает, только через ангуляровскаю обертку.
Нет, скрипт на загрузку файлов карты отрабатывает сразу, и, если приложение еще не готово, карта не будет работать
Если я все правильно понял, скрипт срабатывает тогда, когда видит html тег
Я слегка разобрался, я брал файлик скрипта ya-map-2.2.js из папки примеров(с ним хотябы в браузере работает), сейчас я взял ya-map-2.1.min.js и при попытке отображения карты я получал
Refused to load the image 'data:image/svg+xml;base64 ... because it violates the following Content Security Policy directive: "default-src 'self' *". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.
чтобы заработало нужно ОБЯЗАТЕЛЬНО установить
<meta http-equiv="Content-Security-Policy" content="default-src 'self' http://*.yandex.ru http://*.yandex.net https://*.yandex.ru https://*.yandex.net data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; ">
после чтото уже начало грузиться, но теперь другая проблема, карта в браузере рисуется с размерами 0 х 0, если растянуть на 100%, то отображается левый верхний угол.
Извиняюсь за столько потраченного времени, решилось с использованием скрипта версии 2.2 и указанием контент полиси как в посте выше, у приложения не было доступа на отрисовку изображений из data: и параметры доступа в config.xml не помогали.
В мобильных приложениях на базе Apache Cordova протоколом является 'file://', из-за чего строка в
ya-map-2.2.js:76
:Формирует ссылку вида:
file://api-maps.yandex.ru/...
и не может загрузить скрипт.