Sie sind nicht angemeldet.

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

1

Sonntag, 22. Januar 2017, 06:35

Krpano Weiche Großer Bildschirm / kleiner Bildschirm?

Hallo,

kann mir jemand sagen, ob und wenn ja wie es möglich ist, bei krpano eine Weiche je nach Bildschirmgröße zu machen.
Es geht um Touren wie diese hier http://florian-busch.de/kunden/ice2/tour1.html

Bisher gebe ich 2 Touren ab, einmal die verlinkte, und einmal eine Variante ohne Navimap mit Combobox (Klappmenue).

Eigentlich wäre es ja schöner, wenn es einen automatischen Split gäbe.
Welche Möglichkeiten bietet krpano hier?

Im Prinzip würde es ja wahrscheinlich nicht mal sinnvoll sein, nach Bildschirmauflösung zu splitten (falls das denn möglich ist) weil man Smartphones mit extem hoher Auflösung wahrscheinlich auch nur noch wenig erkennt, oder?

2

Sonntag, 22. Januar 2017, 10:36

stagewidth und stageheight
die Große des Fensters
stagescale
die Skalierung aller Elemente (nur HTLM5)

device
alle möglichen Infos zur Hardware als Boole-Werte.
z.B.
desktop
tablet
mobile
normal (= desktop oder Tablet)

ios, andorid, windows, mac, linux

pixelratio

touch

chrome,firefox,opera,safari

usw.

Gruß
Wolf

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

3

Sonntag, 22. Januar 2017, 11:48

alles klar vielen dank.
Welche Eingrenzungen würdest Du davon empfehlen, um die Trennung sinnvoll zu gestalten?

toosten

Fortgeschrittener

Beiträge: 63

Wohnort: Berlin

Beruf: freier Softwareentwickler (C++, PHP, JSP, Java, Flash-AS3, krpano, HTML/JS)

  • Nachricht senden

4

Sonntag, 22. Januar 2017, 11:49

Man kann ja alles dynamisch ein/ausblenden.

Direkt bei Start:

http://krpano.com/docu/actions/#calc
<... visible="calc:stagewidth GT 1024 ? true : false" ... />

Oder bei http://krpano.com/docu/xml/#events.onresize .

5

Sonntag, 22. Januar 2017, 14:09

Welche Eingrenzungen würdest Du davon empfehlen, um die Trennung sinnvoll zu gestalten?

Optimal wäre es wohl, wenn man die Größe des Displays in Zoll oder cm ermitteln könnte.

Das geht theoretisch im WebVR-Plugin über devizesize.
Viele Geräte unterstützen dies jedoch (noch) nicht.
Da müssen wohl noch viel VR-Brillen verkauft oder verschenkt werden.


Da es bei Smartphones und Tablets ja nicht mehr einen Zusammenhang zwischen der Größe und der Display-Auflösung gibt, kann es derzeit also keine gute Lösung geben.

Ein Kompromiss wäre evtl.:
wenn die Fensterbreite (stagewidth) kleiner als ein bestimmter Wert ist oder es sich nicht um eine device.normal (=Tablet oder Desktop-Rechner) handelt
     dann benutze das vereinfachte UI
sonst
     benutze das komfortable UI.


Die Benutzer von kleinen aber hochauflösenden Tablets sind dann natürlich nicht begeistert.

Gruß
Wolf

toosten

Fortgeschrittener

Beiträge: 63

Wohnort: Berlin

Beruf: freier Softwareentwickler (C++, PHP, JSP, Java, Flash-AS3, krpano, HTML/JS)

  • Nachricht senden

6

Sonntag, 22. Januar 2017, 14:51

Man kann durch einen Trick den DPI-Wert ermitten.
Man erstellt ein DIV mit einer Höhe von 1in(ch) und kann dann per JS die Höhe in Pixeln abfragen:

http://www.webdeveloper.com/forum/showth…5278-System-DPI

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

7

Sonntag, 22. Januar 2017, 22:37

Danke schon mal bis hierher:
Funktioniert die Trennung nach Device:mobile recht zuverlässig, um bei Smartphones zu splitten, oder kommt es da oft zu Fehlern, weil Geräte nicht als Mobile erkannt werden, oder andere als mobile erkannt werden, die es nicht sind?

8

Montag, 23. Januar 2017, 01:42

Man kann durch einen Trick den DPI-Wert ermitten.
Man erstellt ein DIV mit einer Höhe von 1in(ch) und kann dann per JS die Höhe in Pixeln abfragen:

Das wäre zu schön um wahr zu sein.

Die Browser gehen wohl von Default-Werten aus.

Mit CSS und Media-Querys ist das manchmal aber wohl sehr grob in modernen Browsern möglich.
Beispiel 1
Beispiel 2


Bei meinem LG G4 werden 384 dpi angezeigt.
LG behauptet es sind 538 ppi.

Besser als nichts.

Gruß
Wolf

toosten

Fortgeschrittener

Beiträge: 63

Wohnort: Berlin

Beruf: freier Softwareentwickler (C++, PHP, JSP, Java, Flash-AS3, krpano, HTML/JS)

  • Nachricht senden

9

Montag, 23. Januar 2017, 08:29

Hier spielt dir die Browser-Optimierung einen Streich, denn jeder Hersteller versucht dem Nutzer ein optimales Bild zu liefern.

Das Samsung Galaxy S7 liefert auch nur 384dpi, soll aber 577 dpi haben.

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

10

Montag, 6. Februar 2017, 11:31

Ich wollte heute mal erste Tests mit einer Weiche mache, und bekomme es leider nicht hin.
Um es einfach zu halten, wollte ich einfach nur ausprobieren, ob ich es hinbekomme, eine Navimap nur bei bestimmten Devices einzubauen.

Bisher (ohne Weiche) wurden meine Navimaps von der Haupt-XML mit folgendem Code eingebunden:
<scene name="scene_1" onstart="activatespot(spot1, 140);" thumburl="panos/1.tiles/thumb.jpg" lat="" lng="" heading="">
<include url="navimap1.xml"/>
…..

Bei dem Versuch, das Einbinden auf bestimmte Decices zu beschränken, kommt immer der Fehler-Code „Fatal Error - Tour-XML - loading or Parsing failed."

Mit folgenden Zeilen habe ich jeweils versucht, die zweite Zeile zu ersetzen:

<if(device.html5); include url="navimap1.xml"/>
<devices = "mobile" include url="navimap1.xml"/>
<if="devices = "mobile" include url="navimap1.xml"/>
<if="device = mobile" include url="navimap1.xml"/>

Was habe ich falsch gemacht?
Kann mir jemand einen Tip geben, wie der richtige Code sein müßte?

Danke,
Flo

11

Montag, 6. Februar 2017, 11:50

Zeile 1 ist nicht valide, deshalb lädt krpano erst gar nicht. Ob es valide funktionieren würde, ist die andere Frage ;-)

Zitat


Fehler: Nach Elemententyp "if" müssen folgende Attributspezifikationen folgen: ">" oder "/>".
Fehlerstelle:

<if(device.html5) include url="navimap1.xml"/>

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

12

Montag, 6. Februar 2017, 15:14

Danke für Deine Antwort, aber leider komme ich damit noch nicht weiter.

Mit Zeile 1 meinst Du die
<if(device.html5); include url="navimap1.xml"/>
richtig?

Das sie nicht valide ist, dachte ich mir schon, sonst hätte sie ja wahrscheinlich funktioniert.

Aber wie wäre der richtige Code ?

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

13

Montag, 6. Februar 2017, 17:28

Hab im krpano Forum eine Antwort von Klaus bekommen, die ich mal direkt hier reinkopiere.

Hi,

deine Codes sind leider allesamt komplett falsch! ;-)

Richtig wäre z.B.:

Quellcode
1
<include url="..." devices="mobile" />


Das <include ... /> selbst ist das eigentliche XML Element - siehe hier dessen Doku:
https://krpano.com/docu/xml/#include

Das devices="..." ist ein Spezialattribut welches zu jedem XML Element hinzugefügt werden kann und definiert ob dieses XML Elmenet verwendet oder ausgelassen werden soll (je nachdem ob das aktuelle Gerät mit dem devices Wert 'übereinstimmt'). Hier wieder die Doku dazu:
https://krpano.com/docu/xml/#devices

Zusätzlich gibt es seit der Version 1.19 auch ein if="Ausdruck" Spezialattribut, es funktioniert im Prinzip wie das devices Attribut, nur erlaubt es komplexe Ausdrücke zu verwenden.
Das wäre z.B. auch möglich:

Quellcode
1
<include url="..." if="device.mobile == true" />
Ist das gleiche wie devices="mobile".

Schöne Grüße,
Klaus

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

14

Donnerstag, 9. Februar 2017, 11:27

Leider bin ich wieder auf ein Problem gestoßen:

<include url="..." devices="mobile" /> schien zu funktionieren, die Navimap wurde auf meinem Macbook, auf dem ich teste, nicht mehr gezeigt.
Da ich ja eine Trennung nach Bildschirmgröße mit einfachen Mitteln bauen möchte, dachte ich am "mobile" vs. "normal" .

Allerdings wird mein Macbook 15 (normale Einstellungen, tour läuft auf html5 prefer) nicht als normal (und auch nicht als mobile erkannt. (als Desktop wird es angesehen, und andere Erkennungsmerkmale wie touch, mouse, html5 werden korrekt erkannt)

Hat jemand eine Idee, warum das Macbook nicht als "normal" erkannt wird?

15

Freitag, 10. Februar 2017, 09:07

Ist wohl wegrationalisiert worden.
Jedenfalls ist es hier:
https://krpano.com/docu/actions/?version=116#device
nicht mehr vorhanden.

An anderen Stellen ist es in der Doku noch vorhanden.

Gruß
Wolf

Der Flo

Mega-User

  • »Der Flo« ist der Autor dieses Themas

Beiträge: 454

Wohnort: Hamburg

Beruf: Fotograf

  • Nachricht senden

16

Freitag, 10. Februar 2017, 12:55

Ah okay, danke.
Weisst Du, ob ob ich, wenn ich Desktop und Tablet für groß mache, und mobile für klein, alle Geräte abgedeckt sind?
Oder gibt es für krpano Geräte, die weder Desktob, Tablet noch mobile sind (und dann keine Navigation hätten)?
Oder die Mobile und Tablet sind?

17

Freitag, 10. Februar 2017, 16:29

Weisst Du, ob ob ich, wenn ich Desktop und Tablet für groß mache, und mobile für klein, alle Geräte abgedeckt sind?
So würde ich „tri-state“ interpretieren:
"Note - desktop, mobile and tablet are 'tri-state' settings, they can never be set at the same time, only one of these can be set to true."

Wenn Du es perfekt machen wolltest, müsstest Du sowieso noch die Fenstergröße und die Auflösung berücksichtigen. S.o.


Da ich ja eine Trennung nach Bildschirmgröße mit einfachen Mitteln bauen möchte, dachte ich am "mobile" vs. "normal" .
Es reicht doch „mobile“ abzufragen. Wenn false => das „alte“ normal.


Warum darf der User eigentlich nicht entscheiden ob er die Map sehen will?

Gruß
Wolf