getsmap / smap-responsive

A JavaScript framework for simple creation of web maps with responsive design supporting a range of different browsers and devices
GNU General Public License v3.0
14 stars 12 forks source link

Geolocation error message #244

Closed johanlahti closed 7 years ago

johanlahti commented 7 years ago

Suggestion from Magnus L to change Swedish error message:

Förslag. Det kan stå som i Hitta.se, eller kanske "Kunde inte fastställa position. Ändra i Inställningar till "Tillåt platstjänster"".

bennyjonsson commented 7 years ago

Ett alternativ kan ju vara att dölja ikonen om sMap ej är driftad under https och webbrowser inte stödjer osäker anslutning https://youtu.be/c9C99AqX0D0

johanlahti commented 7 years ago

Det rekommenderade sättet verkar vara att fånga felet i callbacken för geolocation.getCurrentPosition().

navigator.geolocation.getCurrentPosition(function(success) { /* Do some magic. */ }, function(failure) { if(failure.message.indexOf("Only secure origins are allowed") == 0) { // Secure Origin issue. } }; });

Om man bara letar efter http/https skulle kartan i det här fallet kunna ligga i en iframe på en sida som körs i http, där den senare förmedlar positionen på ett osäkert sätt till iframens applikation (länk).

Nackdelen med det blir att svaret kommer med en potentiellt lång fördröjning (asynkront) och att användaren dessförinnan måste tillåta att positionen delas. Vore konstigt om knappen bara försvinner därefter… så jag tror lösningen måste bli att förbättra felmeddelandet.

Ett alternativ kunde vara att kolla (location.protocol !== "https:" && parent.window.location.protocol !== "https:") vilket borde vara tillfredsställande för att detektera det (men en iframe kan ju också vara i en iframe o s v…).

johanlahti commented 7 years ago

Jag har fått en mer detaljerad beskrivning av den önskade funktionaliteten och det gäller tydligen inte https. Det handlar om att man någon tidigare nekat sidan tillgång till positionen eller har inställningar som inte tillåter positionering. Eftersom jag inte kan lägga mycket tid på det kommer jag bara ändra felmeddelandet med uppmaning att ändra platsinställningarna.

johanlahti commented 7 years ago

Key matches the default error message, value is the displayed error message (replacing the default message).

// Svenska
errorMessages: {
    "User denied Geolocation": "Kunde inte hitta din position. Ändra platsinställningarna i din telefon.",
    "Only secure origins are allowed": "Kunde inte hitta din position. Anslutningen är osäker (kräver https:)."
}

// English
errorMessages: {
    "User denied Geolocation": "Could not geolocate you. Change the geolocation settings in your phone.",
    "Only secure origins are allowed": "Could not geolocate you. The connection is insecure (requires https:)."
}