2013-10-15 15 views
11

Ich habe einige Probleme mit dem Anzeigen von Karten auf zwei echten Android-Handys - eine laufende 2.2.2 und eine laufende 4.2.2. Letzteres hat mir immer etwas Kummer bereitet, wenn es um Karten geht. Ich habe dies in einen anderen Thread here gelegt, wie ich es teilweise gelöst habe.Phonegap Build: Whitelisting Google Map Domains für API v3

Hinweis: Ich verwende Phonegap Build mit Dreamweaver CS6. Nur eine config.xml ohne Manifest-XML-Datei.

Jetzt habe ich ein anderes Problem, in dem ich alle Domänen auf die weiße Liste setzen muss, damit die Karte auf 4.2.2 richtig funktioniert, und ich weiß nicht warum. Anfangs hatte ich in meinem 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" /> 

Während diese perfekt für Android 2.2.2 gearbeitet würde ich folgende Probleme auf 4.2.2 erhalten:

  • Ende Karte, um die letzten fehlenden Fliesenreihe (wenn ich HTTPS für die google Maps src verwenden)
  • Marker würden bei allen verschwunden

Mit nur alles weiße Liste, alle diese Probleme nicht angezeigt werden soll. Aber ich möchte nicht alles auf die weiße Liste setzen, also weiß jemand, ob ich hier etwas verpasse?

Jede Hilfe sehr geschätzt.

EDIT: Ich verstehe, dass mit der Verwendung von * .googleapis.com würde ich auch die verbleibenden Whitelist-Domänen, die ähnlich sind. Allerdings habe ich bei meinen Suchanfragen mehrfach festgestellt, dass iOS die explizite Auflistung der Domänen erfordert. Auch wenn dies im Moment vielleicht nicht anwendbar ist, beabsichtige ich, diese App unter iOS zu verwenden, also habe ich sie gelassen (es sei denn, jemand kann mir sagen, dass sie völlig nutzlos ist und nicht benötigt wird ;-).

//////// UPDATE 1 ////////

Nachdem auf Chrom Developer Tools durch das Netzwerk Registerkarte Ausgießen ich alle URLs extrahiert, die von Google Karte zugegriffen . Durch die expliziten jedem von ihnen besagen, funktioniert alles in Ordnung wie folgt:

<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"/> 

Diese sind vermutlich Gegenstand so ändern, wäre es gut, wenn ich nur einen Platzhalter * vor jedem der Bereichen verwenden könnte, aber dies tut nicht arbeiten. Ich habe sowohl die mit ohne Erfolg versucht folgende:

<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"/> 

Wer irgendwelche Ideen, warum kann ich nicht den Platzhalter in diesen Fällen benutzen? Prost.

//////// UPDATE 2/ANTWORT ////////

Nach vielen Experimenten ich die Antwort gefunden zu haben. Sieht so aus, als ob Sie sehr genau schreiben müssen, wie Sie die Tags in config.xml schreiben, besonders wenn es darum geht, Subdomains zuzulassen - anscheinend gibt es Subdomains, die nicht mit Platzhaltern arbeiten, also benötigen Sie zwei Blöcke von Tags. Ich habe endlich beide Geräte richtig funktioniert mit https mit den folgenden:

Hoffentlich wird dies für jemanden von Nutzen sein.Ich verstehe immer noch nicht, warum es auf der älteren Version von Android gut funktioniert hat. Vielleicht kann mir jemand helfen, mich aufzuklären, wenn sie sich so fühlen?

Antwort

1

Die Syntax für Whitelisting-Domains hat sich mit den Versionen von PhoneGap geändert. Wenn Sie Version 3.1 oder höher verwenden, finden Sie in dieser Dokumentation die Syntax: http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html. Ich denke, das könnte der Grund sein, warum deine Wildcards nicht für dich funktionierten.

Ich bin mit dem folgenden und es funktioniert mein Google Maps in meinem PhoneGap App zeigen:

<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 
Verwandte Themen