2013-10-15 3 views
11

У меня возникли проблемы с отображением карт на двух реальных телефонах Android: один работает под управлением 2.2.2 и один работает 4.2.2. Последний всегда испытывал некоторое горе, когда речь заходит о картах. Я поместил это в другой поток here, так как я его частично решил.Phonegap Сборка: белый список Google Map Домены для API v3

Примечание: я использую 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)
  • Маркеры не отображаются на всех

по только белый список все, все эти проблемы исчезли. Однако я не хочу, чтобы все белые списки, так что кто-нибудь знает, если я что-то упустил?

Любая помощь очень ценится.

EDIT: Я понимаю, что с помощью * .googleapis.com я бы также включил оставшиеся домены в белом списке, которые похожи. Однако я несколько раз заметил в своих поисках, что iOS требует, чтобы домены отображались явно. Хотя на данный момент это может быть неприменимо, я намереваюсь, чтобы это приложение использовалось на iOS, поэтому я его оставил (если кто-то не может сказать мне, что он совершенно бесполезен и не нужен ;-).

//////// ОБНОВЛЕНИЕ 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"/> 

Кто-нибудь есть какие-либо идеи относительно того, почему я не могу использовать подстановочные знаки в этих случаях? Cheers.

//////// UPDATE 2/ОТВЕТ ////////

После долгих экспериментов я нашел ответ. Похоже, вы должны быть очень конкретными в том, как вы пишете теги в файле 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. Может быть, кто-то может помочь просветить меня, если они так себя чувствуют?

ответ

1

Синтаксис для белых доменов изменен с помощью версий PhoneGap. Если вы используете версию 3.1 или выше, см. Эту документацию для синтаксиса: http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html. Я думаю, может быть, поэтому ваши подстановочные знаки не работали для вас.

Я использую следующие, и она работает, чтобы показать мою Google Maps в моем PhoneGap приложение:

<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 
Смежные вопросы