Kann ich Javascript verwenden, um den Kompass für iOS und Android zu erhalten?

8

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.

    
Sean W. 16.04.2013, 22:47
quelle

4 Antworten

7

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:

%Vor%

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.

    
Jonny 09.12.2014, 22:51
quelle
11

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 .

    
richt 09.10.2014 10:16
quelle
0

In Chrome für Android können Sie 'deviceorientationabsolute' event listener:

verwenden %Vor%

Siehe diesen Artikel in der Google Web Developer-Dokumentation.

Getestet auf Chrome 63 für Android.

    
Frosty Z 18.12.2017 14:36
quelle
-4

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.

    
santamanno 16.04.2013 22:51
quelle

Tags und Links