У меня возникли проблемы с отображением карт на двух реальных телефонах Android: один работает под управлением 2.2.2 и один работает под управлением 4.2.2. Последний всегда испытывал некоторое горе, когда речь заходит о картах. Я поместил это в другой поток здесь, поскольку я частично его разрешил.
Примечание. Я использую Phonegap Build с Dreamweaver CS6. Просто config.xml без манифестного XML файла.
Теперь у меня есть еще одна проблема в том, что я должен белить список всех доменов, чтобы карта правильно функционировала в 4.2.2, и я не знаю почему. Первоначально у меня это было в файле config.xml:
<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.google.com" />
<access origin="maps.googleapis.com" />
<access origin="maps.gstatic.com" />
<access origin="mt0.googleapis.com" />
<access origin="mt1.googleapis.com" />
<access origin="csi.gstatic.com" />
Пока это отлично работало для Android 2.2.2, я бы поставил следующие проблемы в 4.2.2:
- В нижней части карты отсутствует последняя строка плиток (если я использую HTTPS для карт Google src)
- Маркеры вообще не отображались
Просто переименовав все, все эти проблемы исчезли. Однако я не хочу, чтобы все белые списки, так что кто-нибудь знает, если я что-то упустил?
Любая помощь очень ценится.
EDIT: Я понимаю, что с помощью *.googleapis.com я бы также включил оставшиеся белые списки, похожие. Однако я несколько раз заметил в своих поисках, что iOS требует, чтобы домены отображались явно. Хотя на данный момент это может быть неприменимо, я намереваюсь, чтобы это приложение использовалось на iOS, поэтому я его оставил (если кто-то не может сказать мне, что он совершенно бесполезен и не нужен; -).
////////UPDATE 1////////
После того, как вы пролистаете вкладку сети на инструментах разработчика Chrome, я извлек все URL-адреса, к которым обращаются карты Google. Явным образом указывая каждую из них, все работает нормально:
<access origin="https://mts.googleapis.com" subdomains="true"/>
<access origin="https://mts0.googleapis.com" subdomains="true"/>
<access origin="https://mts1.googleapis.com" subdomains="true"/>
<access origin="https://maps.googleapis.com" subdomains="true"/>
<access origin="https://fonts.googleapis.com" subdomains="true"/>
<access origin="https://maps.gstatic.com" subdomains="true"/>
<access origin="https://csi.gstatic.com" subdomains="true"/>
<access origin="https://themes.googleusercontent.com" subdomains="true"/>
Они, вероятно, могут быть изменены, поэтому было бы хорошо, если бы я мог просто использовать подстановочный знак * перед каждым из доменов, но это не работает. Я пробовал оба из следующих: без успеха:
<access origin="*.googleapis.com" subdomains="true"/>
<access origin="*.gstatic.com" subdomains="true"/>
<access origin="*.googleusercontent.com" subdomains="true"/>
<access origin="https://*.googleapis.com" subdomains="true"/>
<access origin="https://*.gstatic.com" subdomains="true"/>
<access origin="https://*.googleusercontent.com" subdomains="true"/>
У кого-нибудь есть идеи относительно того, почему я не могу использовать подстановочный знак в этих случаях? Приветствия.
////////UPDATE 2/ANSWER////////
После долгих экспериментов я нашел ответ. Похоже, вы должны быть очень конкретными в том, как вы пишете теги в файле config.xml, особенно когда речь идет о разрешении субдоменов - очевидно, что поддомены не работают с подстановочными знаками, поэтому вам нужны два блока тегов. У меня, наконец, оба устройства работают правильно, используя https, используя следующее:
<access origin="*.google.com" />
<access origin="*.googleapis.com" />
<access origin="*.gstatic.com" />
<access origin="*.googleusercontent.com" />
<access origin="google.com" subdomains="true"/>
<access origin="googleapis.com" subdomains="true"/>
<access origin="gstatic.com" subdomains="true"/>
<access origin="googleusercontent.com" subdomains="true"/>
Надеюсь, это будет полезно кому-то. Я до сих пор не понимаю, почему он отлично работал на старой версии Android. Может быть, кто-то может помочь просветить меня, если они так себя чувствуют?