Kann ich Javascript plattformübergreifend verwenden, um den Kompass in iOS und Android (mit Chrome) zu steuern, ohne etwas wie PhoneGap zu verwenden? Ich weiß, iOS DeviceOrientationEvent , aber ich kann nicht finden Entsprechendes in Chrome für Android.
Ja, das kannst du! Leider funktioniert das alpha
nicht auf iPhones / iPads. Bei Mobile Safari basiert alpha
auf der Richtung, in die das Gerät bei der ersten Geräteausrichtung zeigte. Das mitgelieferte Webkit bietet Ihnen die Kompassrichtung. Damit es für alle anderen Browser funktioniert (die alle alpha
als compassheading
unterstützen), können Sie den folgenden JavaScript-Code verwenden:
Android unterstützt auch Webkit, also würde auch event.webkitCompassHeading verwendet, aber das ist OK.
Übrigens: " oncompassneedscalibration
" wird auch für iPhones und iPads nicht unterstützt.
Als Grundstein sollten Sie diese vorherige verwandte StackOverflow-Antwort lesen und sich mit dem allgemeinen praktische Überlegungen zur Verwendung von DeviceOrientation-Ereignissen in Webanwendungen.
Die einfache Lösung, die ich in meiner vorherigen StackOverflow-Antwort bereitgestellt habe, gilt nur für Browser, die absolute
deviceorientation-Ereignisse implementieren ( dh Browser, bei denen die Eigenschaft deviceorientation alpha
kompass ist. Das bedeutet, dass die dort angebotene Lösung derzeit nur in Android-Browsern funktioniert und nicht in iOS-basierten Browsern oder anderen Browsern, die keine absolute
-basierten Geräteorientierungs-Ereignisdaten bereitstellen.
Um die aktuelle Kompassrichtung in Android- und iOS-Browsern zuverlässig zu ermitteln, müssen Sie die Implementierungen absolute
und nicht absolute
verarbeiten, die die zusätzliche webkitCompassHeading
-Eigenschaft bereitstellen, und sicherstellen, dass die aktuelle Bildschirmausrichtung berücksichtigt wird ändert sich als Teil davon. AFAIK die einzige Bibliothek, die dies derzeit tut, ist Full Tilt JS (Haftungsausschluss: Ich bin der Autor dieser Bibliothek).
Mit dem folgenden Code erhalten Sie die gleiche korrekte Kompassrichtung für iOS- und Android-Browser. Dabei berücksichtigen Sie die Unterschiede in den Implementierungen der Geräteausrichtung und wenden alle erforderlichen Konvertierungen für die Bildschirmausrichtung an:
%Vor%Hier ist eine Demo , die diese Technik demonstriert, um die Kompassrichtung zu erhalten, auf die der Benutzer blickt. Es sollte sowohl auf iOS- als auch Android-Browsern funktionieren.
Die Implementierung des Codes in dieser Demo ist wie oben gezeigt und kann auf Github unter ./ scripts / compass.js: L268-L272 .
In Chrome für Android können Sie 'deviceorientationabsolute'
event listener:
Siehe diesen Artikel in der Google Web Developer-Dokumentation.
Getestet auf Chrome 63 für Android.
Ich glaube, Sie können das Feld "Überschrift" des Standortobjekts aus navigator.geolocation verwenden, siehe hier:
Ich kenne keinen anderen Weg.
Hoffe es hilft, A.
Tags und Links javascript android ios html5