diff options
author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:47:18 +0100 |
---|---|---|
committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:47:18 +0100 |
commit | 82a56fd6086071926378ba51d62f6beb417878b1 (patch) | |
tree | 349ec10811c116cedc549c732627a6febf102647 /files/he/web/api/geolocation_api | |
parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
download | translated-content-82a56fd6086071926378ba51d62f6beb417878b1.tar.gz translated-content-82a56fd6086071926378ba51d62f6beb417878b1.tar.bz2 translated-content-82a56fd6086071926378ba51d62f6beb417878b1.zip |
unslug he: move
Diffstat (limited to 'files/he/web/api/geolocation_api')
-rw-r--r-- | files/he/web/api/geolocation_api/index.html | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/files/he/web/api/geolocation_api/index.html b/files/he/web/api/geolocation_api/index.html new file mode 100644 index 0000000000..f87dbb0f0b --- /dev/null +++ b/files/he/web/api/geolocation_api/index.html @@ -0,0 +1,250 @@ +--- +title: ממשק שירותי מיקום +slug: Web/API/Geolocation/ממשק_שירותי_מיקום +translation_of: Web/API/Geolocation_API +--- +<p style="direction: rtl;">ממשק שירותי המיקום, geolocation API, מאפשר למשתמש לשתף את המיקום שלו עם אפליקציות ברשת. כדי להגן על הפרטיות, המשתמש נדרש להסכים לשתף את שירותי המיקום שלו.</p> +<p style="direction: rtl;"><span style="font-size: 2.142857142857143rem; font-weight: 700; letter-spacing: -1px; line-height: 30px;">אובייקט ה- geolocation </span></p> +<p style="direction: rtl;">ממשק שירותי המיקום נגיש באמצעות אובייקט:<span style="line-height: 1.5;">{{domxref("window.navigator.geolocation","navigator.geolocation")}} .</span></p> +<p style="direction: rtl;">אם האובייקט קיים, ממשק שירותי המיקום נתמך: ניתן לבדוק אם ממשק שירותי המיקום נתמך באמצעות: </p> +<pre class="brush: js">if ("geolocation" in navigator) { + /* הממשק נתמך*/ +} else { + /* הממשק אינו נתמך */ +}הערה +</pre> +<div class="note"> + <p style="direction: rtl;"><strong>הערה:</strong> מגרסה מס' 24 של FireFox ומטה, הפקודה geolocation" in navigator" מחזירה true אפילו אם הממשק אינו נתמך. באג זה תוקן ב<a href="/en-US/docs/Mozilla/Firefox/Releases/25/Site_Compatibility">גרסה 25 של FireFox</a> על מנת לעמוד בתקן. ({{bug(884921)}}).</p> +</div> +<h3 id="קבלת_המיקום_הנוכחי" style="direction: rtl;">קבלת המיקום הנוכחי</h3> +<p dir="rtl">כדי לקבל את נתוני המיקום הנוכחי של המשתמש, ניתן לקרוא לפונקציה: <span style="line-height: 1.5;"> {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}}. הפונקציה יוצרת קריאה אסינכרונית על מנת לאחזר את המיקום של המשתמש ובודקת את החומרה על מנת לקבל את המיקום העדכני ביותר. כאשר נתוני המיקום חוזרים כתוצאה מהקריאה, פונקציית המטרה (באנגלית: callback) נקראת. אפשר להעביר לקריאה פרמטר נוסף, פרמטר שני: פונקציית מטרה לטיפול במיקרה של שגיאה. אפשר להעביר פרמטר שלישי לקריאה: אובייקט options שבו אפשר להגדיר מהו הוותק המכסימלי לערכי המיקום המוחזרים, משך הזמן המכסימלי להמתנה עד שנתוני המיקום יתקבלו ורמת הדיוק של נתוני המיקום. </span></p> +<div class="note"> + <p style="direction: rtl;"><strong>הערה</strong>: כברירת מחדל, הפונקציה<span style="line-height: 1.5;">, {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}} מנסה להחזיר את נתוני המיקום במהירות האפשרית, אך ברמת דיוק מינימלית. צורה זו שימושית אם רוצים לקבל את הנתונים במהירות הגבוהה האפשרית תוך התפשרות על רמת הדיוק. במכשירים עם מנגנון GPS משך הזמן לקבלת נתונים יכול לקחת דקה ויותר, לכן הפונקציה </span><span style="line-height: 1.5;"> {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}} יכולה לקבל בחזרה נתונים שיש בהם מידה מסוימת של שגיאה (אם המיקום חושב על בסיס כתובת IP על בסיס מיקום נקודת wifi).</span></p> +</div> +<pre class="brush: js">navigator.geolocation.getCurrentPosition(function(position) { + do_something(position.coords.latitude, position.coords.longitude); +});</pre> +<p style="direction: rtl;">הקוד בדוגמא שלעיל יגרום לפונקצייה, ()do_something, להתבצע כאשר נתוני המיקום חזרו.</p> +<p> </p> +<p style="direction: rtl;"><span style="font-size: 1.714285714285714rem; letter-spacing: -0.5px; line-height: 24px;">מעקב אחר המיקום הנוכחי</span></p> +<p style="direction: rtl;"><span style="line-height: 1.5;">אם נתוני המיקום משתנים (בגלל שהדפדפן נמצא בתנועה, או אם הגיעו נתוני מיקום מדוייקים יותר), אפשר להגדיר פונקציית מטרה (באנגלית: callback), המקבלת נתוני מיקום מעודכנים יותר. עושים זאת באמצעות הפונקציה: </span><span style="line-height: 1.5;">{{domxref("window.navigator.geolocation.watchPosition()","watchPosition()")}} שיש לה את אותם פרמטרים כמו הפונקציה: </span><span style="line-height: 1.5;"> {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}}. פונקציית המטרה מתבצעת מס' כלשהו של פעמים ומאפשרת לדפדפן לעדכן את המיקום של המשתמש תוך כדי תנועה, או לעדכן את מיקומו בנתונים מעודכנים יותר שהגיעו על ידי טכניקות זיהוי מיקום מדוייקות יותר. ניתן להגדיר פונקציית מטרה נוספת למקרה של שגיאה שתיקרא בכל פעם שתתרחש שגיאה כפי שקורה במיקרה של: </span><span style="line-height: 1.5;"> {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}}.</span></p> +<div class="note"> + <p style="direction: rtl;"><strong>הערה</strong>: ניתן להשתמש בפונקציה: <span style="line-height: 1.5;">{{domxref("window.navigator.geolocation.watchPosition()","watchPosition()")}} מבלי צורך לקרוא לפני כן לפונקציה: {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}} .</span></p> +</div> +<pre class="brush: js">var watchID = navigator.geolocation.watchPosition(function(position) { + do_something(position.coords.latitude, position.coords.longitude); +});</pre> +<p style="direction: rtl;">הפונקציה <span style="line-height: 1.5;">{{domxref("window.navigator.geolocation.watchPosition()","watchPosition()")}} מחזירה id שמזהה את הפונקציה שעוקבת אחר המיקום. ניתן לאחר מכן להשתמש בו כדי לקרוא לפונקציה </span><span style="line-height: 1.5;"> {{domxref("window.navigator.geolocation.clearWatch()","clearWatch()")}} על מנת להפסיק את פעולת המעקב אחרי תנועת המשתמש.</span></p> +<pre class="brush: js">navigator.geolocation.clearWatch(watchID); +</pre> +<h3 id="כיול_התוצאות" style="direction: rtl;">כיול התוצאות</h3> +<p style="direction: rtl;">הן הפונקציה {{domxref("window.navigator.geolocation.getCurrentPosition()","getCurrentPosition()")}} והן הפונקציה {{domxref("window.navigator.geolocation.watchPosition()","watchPosition()")}} מקבלות פרמטר פונקציית מטרה למקרה הצלחה בקבלת נתונים, מקבלות פרמטר אופציונאלי למקרה של שגיאה בקבלת נתוני מיקום ופרמטר אופציונאלי שלישי: אובייקט <span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">PositionOptions</code><span style="line-height: 1.5;">.</span></p> +<p>{{page("/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition","PositionOptions")}}</p> +<p style="direction: rtl;">קריאה ל: {{domxref("window.navigator.geolocation.watchPosition()","watchPosition")}} יכולה להיראות כך:</p> +<pre class="brush: js">function geo_success(position) { + do_something(position.coords.latitude, position.coords.longitude); +} + +function geo_error() { + alert("Sorry, no position available."); +} + +var geo_options = { + enableHighAccuracy: true, + maximumAge : 30000, + timeout : 27000 +}; + +var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);</pre> +<p><a id="fck_paste_padding">A demo of watchPosition in use: </a><a class="external" href="http://www.thedotproduct.org/experiments/geo/">http://www.thedotproduct.org/experiments/geo/</a><br> + <a id="fck_paste_padding"></a></p> +<h2 id="נתוני_המיקום" style="direction: rtl;">נתוני המיקום</h2> +<p style="direction: rtl;">המיקום של המשתמש הוא אובייקט <code>Position</code> שמכיל בתוכו אובייקט <code>Coordinates</code>.</p> +<p><span style="line-height: 1.5;">{{page("/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition","Position")}}</span></p> +<p>{{page("/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition","Coordinates")}}</p> +<h2 id="טיפול_בשגיאות" style="direction: rtl;">טיפול בשגיאות</h2> +<p style="direction: rtl;"><span style="font-size: 14px; font-weight: normal; line-height: 1.5;">פונקציית המטרה לטיפול בשגיאות נגישה גם בקריאה לפונקציה ()</span><code><span style="font-size: 14px; line-height: 1.5;"><font face="Courier New, Andale Mono, monospace">getCurrentPosition</font></span></code><span style="line-height: 1.5;"><code> </code>וגם בקריאה ל ()<code>watchPosition</code><strong><code>, </code></strong></span>ומקבלת כפרמטר ראשון אובייקט <code>PositionError</code>. </p> +<pre class="brush: js">function errorCallback(error) { + alert('ERROR(' + error.code + '): ' + error.message); +}; +</pre> +<p>{{page("/en-US/docs/DOM/window.navigator.geolocation.getCurrentPosition","PositionError")}}</p> +<h2 id="דוגמא_שלמה_לממשק_שירותי_מיקום" style="direction: rtl;">דוגמא שלמה לממשק שירותי מיקום</h2> +<div class="hidden"> + <pre class="brush: css">body { + padding: 20px; + background-color:#ffffc9 +} + +p { margin : 0; } +</pre> +</div> +<h3 id="HTML" style="direction: rtl;">HTML: </h3> +<pre class="brush: html;"><p><button onclick="geoFindMe()">Show my location</button></p> +<div id="out"></div> +</pre> +<h3 id="JavaScript" style="direction: rtl;">JavaScript:</h3> +<pre class="brush: js;">function geoFindMe() { + var output = document.getElementById("out"); + + if (!navigator.geolocation){ + output.innerHTML = "<p>Geolocation is not supported by your browser</p>"; + return; + } + + function success(position) { + var latitude = position.coords.latitude; + var longitude = position.coords.longitude; + + output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>'; + + var img = new Image(); + img.src = "http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false"; + + output.appendChild(img); + }; + + function error() { + output.innerHTML = "Unable to retrieve your location"; + }; + + output.innerHTML = "<p>Locating…</p>"; + + navigator.geolocation.getCurrentPosition(success, error); +} +</pre> +<h3 id="תוצאות_של_הדוגמא_לעיל" style="direction: rtl;">תוצאות של הדוגמא לעיל:</h3> +<p>{{ EmbedLiveSample('Geolocation_Live_Example',350,410) }}</p> +<h2 id="הצגת_הודעה_לבקשת_רשות" style="direction: rtl;">הצגת הודעה לבקשת רשות</h2> +<p style="direction: rtl;">כל תוסף המשתייך ל addons.mozilla.org המשתמש בממשק שירותי המיקום חייב לקבל אישור מהמשתמש לגשת לממשק על ידי בקשת רשות מפורשת. הפונקציה הבאה תבקש אישור באופן שזהה לבקשת האישור המוצגת לדפים ברשת. הבחירה של המשתמש תישמר בהעדפות באמצעות פרמטר <code>pref </code>או הוא מאופשר. הפונקציה המוצבעת על ידי פרמטר <code>callback </code>תיקרא עם פרמטר בוליאני המציין את בחירת המשתמש. אם הערך <code>true </code>יש לתוסף הרשאה לגשת לנתוני המיקום. </p> +<pre class="brush: js">function prompt(window, pref, message, callback) { + let branch = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefBranch); + + if (branch.getPrefType(pref) === branch.PREF_STRING) { + switch (branch.getCharPref(pref)) { + case "always": + return callback(true); + case "never": + return callback(false); + } + } + + let done = false; + + function remember(value, result) { + return function() { + done = true; + branch.setCharPref(pref, value); + callback(result); + } + } + + let self = window.PopupNotifications.show( + window.gBrowser.selectedBrowser, + "geolocation", + message, + "geo-notification-icon", + { + label: "Share Location", + accessKey: "S", + callback: function(notification) { + done = true; + callback(true); + } + }, [ + { + label: "Always Share", + accessKey: "A", + callback: remember("always", true) + }, + { + label: "Never Share", + accessKey: "N", + callback: remember("never", false) + } + ], { + eventCallback: function(event) { + if (event === "dismissed") { + if (!done) callback(false); + done = true; + window.PopupNotifications.remove(self); + } + }, + persistWhileVisible: true + }); +} + +prompt(window, + "extensions.foo-addon.allowGeolocation", + "Foo Add-on wants to know your location.", + function callback(allowed) { alert(allowed); }); +</pre> +<h2 id="תאימות_דפדפנים">תאימות דפדפנים</h2> +<div> + {{ CompatibilityTable() }}</div> +<div> + </div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>5</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>9</td> + <td>10.60<br> + Removed in 15.0<br> + Reintroduced in 16.0</td> + <td>5</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>Firefox OS</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatUnknown()}}</td> + <td>{{CompatUnknown()}}</td> + <td>{{CompatGeckoMobile("4")}}</td> + <td>1.0.1</td> + <td>{{CompatUnknown()}}</td> + <td>10.60<br> + Removed in 15.0<br> + Reintroduced in 16.0</td> + <td>{{CompatUnknown()}}</td> + </tr> + </tbody> + </table> +</div> +<h3 id="הערות_לגבי_Gecko" style="direction: rtl;">הערות לגבי Gecko</h3> +<p style="direction: rtl;">דפדפן FireFox תומך בקבלת נתוני המיקום בהתבסס על מידע WiFi באמצעות שירותי המיקום של גוגל. בטרנזאקציה שבין FireFox ל Google, המידע שמועבר כולל מידע על נקודת הגישה ל WiFi, כולל access token (שדומה לcookie בעלת תוקף למשך שבועיים) וכולל את כתובת ה IP של המשתמש. למידע נוסף יש התעדכן ב<a href="http://www.mozilla.com/en-US/legal/privacy/">תנאי הפרטיות</a> של Mozilla וב<a href="http://www.google.com/privacy-lsf.html">תנאי הפרטיות</a> של גוגל המפרטים באיזה אופן נתונים אלה ניתנים לשימוש. </p> +<p style="direction: rtl;">FireFox גרסת 3.6 (Gecko 1.9.2) הוסיף תמיכה לשימוש בשירות GPSD (GPS daemon) בשביל שירותי מיקום עבור Linux. </p> +<p style="direction: rtl;"><span style="font-size: 2.142857142857143rem; font-weight: 700; letter-spacing: -1px; line-height: 30px;">לעיון נוסף</span></p> +<ul> + <li>{{domxref("window.navigator.geolocation","navigator.geolocation")}}</li> + <li><a href="/en-US/Apps/Build/gather_and_modify_data/Plotting_yourself_on_the_map">צייר את עצמך על המפה</a></li> + <li><a href="http://www.w3.org/TR/geolocation-API/">ממשק שירותי המיקום ב:w3.org</a></li> + <li><a href="/en-US/demos/tag/tech:geolocation">דוגמאות לשימוש במשק נתוני המיקום</a></li> + <li><a href="https://hacks.mozilla.org/2013/10/who-moved-my-geolocation/">Who moved my geolocation?</a> (Hacks blog)</li> +</ul> |