{"id":8426,"date":"2026-07-26T01:06:50","date_gmt":"2026-07-26T01:06:50","guid":{"rendered":"https:\/\/drakemarine.com\/live-boat-instruments\/"},"modified":"2026-07-26T06:31:51","modified_gmt":"2026-07-26T06:31:51","slug":"%d0%b6%d0%b8%d0%b2%d1%8b%d0%b5-%d0%bb%d0%be%d0%b4%d0%be%d1%87%d0%bd%d1%8b%d0%b5-%d0%b8%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b","status":"publish","type":"page","link":"https:\/\/drakemarine.com\/ru\/live-boat-instruments\/","title":{"rendered":"\u041f\u0440\u0438\u0431\u043e\u0440\u044b \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 GPS-\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044f\u043a\u043e\u0440\u044f \u0438 \u043f\u0443\u0442\u0435\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438."},"content":{"rendered":"<p>Your phone as deck instruments: live GPS speed and trip log, an anchor drag alarm that watches all night, waypoint range, bearing and ETA, and a man-overboard marker. Free, no sign-up, works with no phone signal.<\/p>\n<style>\n.dm-tool{max-width:920px;margin:0 auto;padding:8px 0 40px;color:#12395e;font-family:'DM Sans',Helvetica,Arial,sans-serif}\n.dm-tool .card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:22px;margin:16px 0}\n.dm-tool h2{margin:0 0 6px;font-size:1.2rem}\n.dm-tool .hint{color:#5b7186;font-size:.9rem;margin:0 0 14px;line-height:1.5}\n.dm-tool .tabs{display:flex;gap:8px;margin:4px 0 6px;flex-wrap:wrap}\n.dm-tool .tabs button{font-family:inherit;font-weight:800;font-size:.95rem;border:1.5px solid #cbd5e1;background:#fff;color:#41586e;border-radius:10px;padding:11px 18px;cursor:pointer}\n.dm-tool .tabs button.on{background:#12395e;border-color:#12395e;color:#fff}\n.dm-tool label{display:block;font-weight:700;font-size:.85rem;letter-spacing:.04em;text-transform:uppercase;color:#41586e;margin:14px 0 6px}\n.dm-tool input[type=number],.dm-tool input[type=text]{width:100%;max-width:340px;padding:11px 12px;border:1.5px solid #cbd5e1;border-radius:9px;font-size:1rem;font-family:inherit;background:#fff;color:#12395e}\n.dm-tool button.go{background:#00A8FF;color:#04263f;font-weight:800;font-size:1rem;border:0;border-radius:10px;padding:13px 24px;margin-top:14px;cursor:pointer;font-family:inherit}\n.dm-tool button.go:hover{background:#0b8ed4}\n.dm-tool button.warn{background:#c0392b;color:#fff;font-weight:800;font-size:1rem;border:0;border-radius:10px;padding:13px 24px;margin-top:14px;cursor:pointer;font-family:inherit}\n.dm-tool button.ghost{background:#fff;border:1.5px solid #cbd5e1;color:#41586e;font-weight:800;font-size:.9rem;border-radius:9px;padding:10px 16px;margin:14px 6px 0 0;cursor:pointer;font-family:inherit}\n.dm-tool .gpsbar{display:flex;align-items:center;gap:10px;background:#eef2f6;border-radius:10px;padding:10px 14px;font-size:.88rem;color:#41586e;flex-wrap:wrap}\n.dm-tool .gpsbar .dot{width:12px;height:12px;border-radius:50%;background:#b8c4cf}\n.dm-tool .gpsbar .dot.ok{background:#2eae4e}\n.dm-tool .gpsbar .dot.bad{background:#c0392b}\n.dm-tool .big-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:14px}\n.dm-tool .inst{background:#0d2b47;border-radius:14px;padding:16px 18px;color:#f6f4ed;text-align:center}\n.dm-tool .inst .v{font-size:3.1rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums}\n.dm-tool .inst .u{font-size:.85rem;color:#8fd4ff;letter-spacing:.08em;text-transform:uppercase;margin-top:2px}\n.dm-tool .inst.small .v{font-size:1.5rem}\n.dm-tool .mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:12px}\n.dm-tool .mini .inst{padding:10px 12px}\n.dm-tool .mini .inst .v{font-size:1.4rem}\n.dm-tool canvas{display:block;margin:14px auto 0;background:#0d2b47;border-radius:14px;max-width:100%}\n.dm-tool .alarmbar{display:none;background:#c0392b;color:#fff;border-radius:12px;padding:16px 18px;margin-top:14px;text-align:center;font-weight:800;font-size:1.2rem}\n.dm-tool.alarming .alarmbar{display:block;animation:dmflash 0.6s infinite}\n@keyframes dmflash{50%{opacity:0.35}}\n.dm-tool .note{font-size:.84rem;color:#5b7186;margin-top:14px;line-height:1.55}\n.dm-tool .note a{color:#0b76c4;font-weight:700;text-decoration:none}\n.dm-tool .mob{position:sticky;top:8px;z-index:5;text-align:right}\n.dm-tool .mob button{background:#e67e00;color:#fff;font-weight:800;font-size:.95rem;border:0;border-radius:10px;padding:12px 18px;cursor:pointer;font-family:inherit;box-shadow:0 4px 14px rgba(0,0,0,.25)}\n\/* Night mode \u2014 red on black for the night watch *\/\n.dm-tool.dm-night{background:#000;border-radius:14px}\n.dm-night .card{background:#0b0505;border-color:#2a0f0d}\n.dm-night h2{color:#e0392e}\n.dm-night .hint,.dm-night label,.dm-night .note{color:#9a2f26}\n.dm-night .gpsbar{background:#150808;color:#9a2f26}\n.dm-night .inst{background:#0b0505;box-shadow:inset 0 0 0 1px #2a0f0d}\n.dm-night .inst .v{color:#ff5044}\n.dm-night .inst .u{color:#7a1f1a}\n.dm-night input[type=number],.dm-night input[type=text]{background:#150808;border-color:#3a1512;color:#e0392e}\n.dm-night .tabs button{background:#0b0505;border-color:#3a1512;color:#9a2f26}\n.dm-night .tabs button.on{background:#2a0f0d;border-color:#e0392e;color:#ff5044}\n.dm-night button.go{background:#7a1f1a;color:#ffb3ab}\n.dm-night button.ghost{background:#0b0505;border-color:#3a1512;color:#9a2f26}\n.dm-night canvas{filter:brightness(.75) sepia(1) hue-rotate(-45deg) saturate(4)}\n.dm-night .note a{color:#ff5044}\n<\/style>\n<div class=\"dm-tool\" id=\"dm-live-tool\">\n<div class=\"mob\"><button type=\"button\" onclick=\"dmMOB()\">&#9873; MOB \u2014 mark position<\/button><\/div>\n<div class=\"gpsbar\"><span class=\"dot\" id=\"lv-dot\"><\/span><span id=\"lv-stat\">GPS off \u2014 press Start on any instrument<\/span><span id=\"lv-acc\"><\/span><br \/>\n    <button class=\"ghost\" type=\"button\" id=\"lv-night\" onclick=\"dmNightL()\" style=\"margin:0 0 0 auto\" title=\"Red-on-black for night vision\">&#9789; Night<\/button><br \/>\n    <button class=\"ghost\" type=\"button\" id=\"lv-wake\" onclick=\"dmWake()\" style=\"margin:0\">Keep screen awake<\/button>\n  <\/div>\n<div class=\"tabs\" style=\"margin-top:12px\">\n    <button type=\"button\" id=\"lt-dash\" class=\"on\" onclick=\"dmLTab('dash')\">Speed &amp; trip<\/button><br \/>\n    <button type=\"button\" id=\"lt-anch\" onclick=\"dmLTab('anch')\">Anchor watch<\/button><br \/>\n    <button type=\"button\" id=\"lt-wpt\" onclick=\"dmLTab('wpt')\">Waypoint &amp; ETA<\/button>\n  <\/div>\n<div class=\"card\" id=\"lpane-dash\">\n<h2>GPS speed &amp; trip log<\/h2>\n<p class=\"hint\">Straight from your phone&#8217;s GPS \u2014 no signal or SIM needed. Prop it at the helm.<\/p>\n<p>    <button class=\"go\" type=\"button\" id=\"dash-btn\" onclick=\"dmGpsToggle()\">Start GPS<\/button><\/p>\n<div class=\"big-grid\">\n<div class=\"inst\">\n<div class=\"v\" id=\"d-sog\">\u2013.\u2013<\/div>\n<div class=\"u\">SOG kn<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"d-cog\">\u2013 \u2013 \u2013<\/div>\n<div class=\"u\">COG &deg;T<\/div>\n<\/div><\/div>\n<div class=\"mini\">\n<div class=\"inst\">\n<div class=\"v\" id=\"d-trip\">0.00<\/div>\n<div class=\"u\">trip nm<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"d-time\">0:00<\/div>\n<div class=\"u\">underway<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"d-max\">0.0<\/div>\n<div class=\"u\">max kn<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"d-avg\">0.0<\/div>\n<div class=\"u\">avg kn<\/div>\n<\/div><\/div>\n<div class=\"inst small\" style=\"margin-top:12px\">\n<div class=\"v\" id=\"d-pos\">position waiting for fix&hellip;<\/div>\n<div class=\"u\">position<\/div>\n<\/div>\n<p>    <button class=\"ghost\" type=\"button\" onclick=\"dmTripReset()\">Reset trip<\/button>\n  <\/div>\n<div class=\"card\" id=\"lpane-anch\" style=\"display:none\">\n<h2>Anchor watch &amp; drag alarm<\/h2>\n<p class=\"hint\">Drop the pin when the anchor bites, set your swing, and sleep \u2014 if the boat leaves the circle this page makes an unmissable noise. Keep it open, screen awake, phone on charge.<\/p>\n<p>    <label for=\"an-rad\">Alarm radius (m) \u2014 chain out + boat length + a little<\/label><br \/>\n    <input type=\"number\" id=\"an-rad\" min=\"15\" max=\"300\" step=\"5\" value=\"45\"><\/p>\n<div>\n      <button class=\"go\" type=\"button\" id=\"an-set\" onclick=\"dmAnchorSet()\">&#9875; Drop pin at current position<\/button><br \/>\n      <button class=\"warn\" type=\"button\" id=\"an-stop\" onclick=\"dmAlarmStop()\" style=\"display:none\">Silence alarm<\/button><br \/>\n      <button class=\"ghost\" type=\"button\" onclick=\"dmAlarmTest()\">Test the alarm<\/button><br \/>\n      <button class=\"ghost\" type=\"button\" onclick=\"dmAnchorClear()\">Clear watch<\/button>\n    <\/div>\n<div class=\"mini\">\n<div class=\"inst\">\n<div class=\"v\" id=\"a-dist\">\u2013<\/div>\n<div class=\"u\">m from anchor<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"a-brg\">\u2013<\/div>\n<div class=\"u\">bearing to anchor<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"a-max\">\u2013<\/div>\n<div class=\"u\">max excursion m<\/div>\n<\/div><\/div>\n<div class=\"alarmbar\" id=\"a-bar\">&#9888; DRAGGING \u2014 OUTSIDE THE CIRCLE<\/div>\n<p>    <canvas id=\"a-cv\" width=\"340\" height=\"340\"><\/canvas><\/p>\n<p class=\"note\">The plot shows your swing history around the pin (centre). An arc of positions is normal \u2014 wind and tide swing you; a track walking steadily out of the circle is a drag. The alarm needs this page open in the foreground with the screen awake \u2014 that&#8217;s what the button in the bar above is for. An aid to a proper anchor watch, not a replacement for one.<\/p>\n<\/p><\/div>\n<div class=\"card\" id=\"lpane-wpt\" style=\"display:none\">\n<h2>Waypoint \u2014 live range, bearing &amp; ETA<\/h2>\n<p class=\"hint\">Punch in where you&#8217;re headed; we&#8217;ll read out the rest as you go.<\/p>\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 20px;max-width:560px\">\n<div><label for=\"w-lat\">Waypoint latitude (decimal&deg;, S&nbsp;&minus;)<\/label><input type=\"number\" id=\"w-lat\" step=\"0.0001\" placeholder=\"7.8721\"><\/div>\n<div><label for=\"w-lng\">Waypoint longitude (decimal&deg;, W&nbsp;&minus;)<\/label><input type=\"number\" id=\"w-lng\" step=\"0.0001\" placeholder=\"98.3923\"><\/div>\n<\/p><\/div>\n<p>    <button class=\"go\" type=\"button\" onclick=\"dmWptSet()\">Go to waypoint<\/button><\/p>\n<div class=\"big-grid\">\n<div class=\"inst\">\n<div class=\"v\" id=\"w-rng\">\u2013.\u2013<\/div>\n<div class=\"u\">range nm<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"w-brg\">\u2013 \u2013 \u2013<\/div>\n<div class=\"u\">bearing &deg;T<\/div>\n<\/div><\/div>\n<div class=\"mini\">\n<div class=\"inst\">\n<div class=\"v\" id=\"w-vmg\">\u2013.\u2013<\/div>\n<div class=\"u\">VMG kn<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"w-eta\">\u2013:\u2013<\/div>\n<div class=\"u\">ETA<\/div>\n<\/div>\n<div class=\"inst\">\n<div class=\"v\" id=\"w-ttg\">\u2013<\/div>\n<div class=\"u\">time to go<\/div>\n<\/div><\/div>\n<p class=\"note\" id=\"w-note\">Bearing is true; steer it with the tide allowed for \u2014 the <a href=\"\/cruising-calculators\/\">course to steer calculator<\/a> does that sum. VMG is your speed made good towards this waypoint; if it&#8217;s much less than your SOG, the tide or your helming is taking you sideways.<\/p>\n<\/p><\/div>\n<p class=\"note\" style=\"margin-top:4px\"><strong>Fair warning &amp; fair use:<\/strong> these instruments are a planning and monitoring aid using your device&#8217;s GPS \u2014 accuracy varies with the phone and the sky. Not a substitute for the vessel&#8217;s navigation systems, a proper lookout, or good seamanship. MOB button marks a position and steers you back to it; it does not replace MOB drills, DSC or AIS beacons. Free, offline-capable, from the chandlery that would rather you got home: <a href=\"\/boat-tools\/\">more boat tools<\/a>.<\/p>\n<\/div>\n<p><script>\n(function(){\nvar R2D=180\/Math.PI, D2R=Math.PI\/180, EARTH=6371000;\nvar watchId=null, last=null, prev=null, sogKn=0, cogT=null;\nvar trip=0, tStart=null, maxSog=0, moveMs=0, lastFixT=0;\nvar anchor=null, anchMax=0, trail=[], alarmOn=false, alarmCtx=null, alarmInt=null, armed=false;\nvar wpt=null, mob=null, wakeLock=null;\nfunction $(id){return document.getElementById(id);}\nfunction dist(a,b){var dLat=(b.lat-a.lat)*D2R,dLng=(b.lng-a.lng)*D2R;\n  var h=Math.sin(dLat\/2)*Math.sin(dLat\/2)+Math.cos(a.lat*D2R)*Math.cos(b.lat*D2R)*Math.sin(dLng\/2)*Math.sin(dLng\/2);\n  return 2*EARTH*Math.asin(Math.sqrt(h));}\nfunction brg(a,b){var dLng=(b.lng-a.lng)*D2R;\n  var y=Math.sin(dLng)*Math.cos(b.lat*D2R);\n  var x=Math.cos(a.lat*D2R)*Math.sin(b.lat*D2R)-Math.sin(a.lat*D2R)*Math.cos(b.lat*D2R)*Math.cos(dLng);\n  return (Math.atan2(y,x)*R2D+360)%360;}\nfunction fmtPos(p){function f(v,isLat){var h=v>=0?(isLat?'N':'E'):(isLat?'S':'W');v=Math.abs(v);var d=Math.floor(v);var m=(v-d)*60;\n  return String(d).padStart(isLat?2:3,'0')+'\u00b0'+m.toFixed(3)+'\u2032'+h;}\n  return f(p.lat,true)+'  '+f(p.lng,false);}\nwindow.dmLTab=function(t){['dash','anch','wpt'].forEach(function(k){$('lpane-'+k).style.display=k===t?'block':'none';$('lt-'+k).className=k===t?'on':'';});};\nfunction onFix(pos){\n  var c=pos.coords, now=pos.timestamp||Date.now();\n  var p={lat:c.latitude,lng:c.longitude};\n  $('lv-dot').className='dot ok';\n  $('lv-stat').textContent='GPS live';\n  $('lv-acc').textContent='\u00b1'+Math.round(c.accuracy)+' m';\n  if(c.speed!==null&&!isNaN(c.speed)&&c.speed>=0){sogKn=c.speed*1.94384;}\n  else if(last&&now>lastFixT){var d=dist(last,p),dt=(now-lastFixT)\/1000;\n    var calc=dt>0.5?(d\/dt)*1.94384:null;\n    if(calc!==null&&calc<60){sogKn=calc;}          \/\/ >60 kn between fixes = GPS jump, not boat speed\n  }\n  if(c.heading!==null&&!isNaN(c.heading)&&sogKn>0.5){cogT=c.heading;}\n  else if(last&&sogKn>0.5){cogT=brg(last,p);}\n  if(last){var step=dist(last,p);\n    if(step>2&&step<500&#038;&#038;c.accuracy<80){trip+=step;if(sogKn>0.8)moveMs+=(now-lastFixT);}}\n  prev=last;last=p;lastFixT=now;\n  if(sogKn>maxSog&&sogKn<80)maxSog=sogKn;\n  \/\/ dash\n  $('d-sog').textContent=sogKn<0.3?'0.0':sogKn.toFixed(1);\n  $('d-cog').textContent=cogT===null?'\u2013 \u2013 \u2013':String(Math.round(cogT)).padStart(3,'0');\n  $('d-trip').textContent=(trip\/1852).toFixed(2);\n  $('d-max').textContent=maxSog.toFixed(1);\n  var mh=moveMs\/3600000;\n  $('d-avg').textContent=mh>0.01?((trip\/1852)\/mh).toFixed(1):'0.0';\n  $('d-time').textContent=Math.floor(mh)+':'+String(Math.floor((mh%1)*60)).padStart(2,'0');\n  $('d-pos').textContent=fmtPos(p);\n  \/\/ anchor\n  if(anchor){\n    var ad=dist(anchor,p), ab=brg(p,anchor);\n    if(ad>anchMax)anchMax=ad;\n    $('a-dist').textContent=Math.round(ad);\n    $('a-brg').textContent=String(Math.round(ab)).padStart(3,'0');\n    $('a-max').textContent=Math.round(anchMax);\n    trail.push(p);if(trail.length>600)trail.shift();\n    dmPlot(ad);\n    var rad=parseFloat($('an-rad').value)||45;\n    if(armed&&ad>rad&&c.accuracy<Math.max(30,rad*0.8)){dmAlarmStart();}\n  }\n  \/\/ waypoint \/ mob\n  var target=mob||wpt;\n  if(target){\n    var wd=dist(p,target)\/1852, wb=brg(p,target);\n    $('w-rng').textContent=wd<10?wd.toFixed(2):wd.toFixed(1);\n    $('w-brg').textContent=String(Math.round(wb)).padStart(3,'0');\n    var vmg=0;\n    if(cogT!==null&#038;&#038;sogKn>0.3){vmg=sogKn*Math.cos((wb-cogT)*D2R);}\n    $('w-vmg').textContent=vmg.toFixed(1);\n    if(vmg>0.3){var hrs=wd\/vmg;var eta=new Date(Date.now()+hrs*3600000);\n      $('w-eta').textContent=String(eta.getHours()).padStart(2,'0')+':'+String(eta.getMinutes()).padStart(2,'0');\n      $('w-ttg').textContent=Math.floor(hrs)+'h '+String(Math.round((hrs%1)*60)).padStart(2,'0')+'m';\n    }else{$('w-eta').textContent='\u2013:\u2013';$('w-ttg').textContent='\u2013';}\n  }\n}\nfunction onErr(e){$('lv-dot').className='dot bad';$('lv-stat').textContent=e.code===1?'Location permission denied \u2014 allow it in your browser settings':'Waiting for GPS\u2026';}\nwindow.dmGpsStart=function(){\n  if(watchId!==null)return;\n  if(!navigator.geolocation){$('lv-stat').textContent='No GPS on this device\/browser';return;}\n  watchId=navigator.geolocation.watchPosition(onFix,onErr,{enableHighAccuracy:true,maximumAge:1000,timeout:20000});\n  $('lv-stat').textContent='Starting GPS\u2026';$('dash-btn').textContent='Stop GPS';\n};\nwindow.dmGpsToggle=function(){\n  if(watchId!==null){navigator.geolocation.clearWatch(watchId);watchId=null;$('lv-dot').className='dot';$('lv-stat').textContent='GPS off';$('lv-acc').textContent='';$('dash-btn').textContent='Start GPS';}\n  else{dmGpsStart();}\n};\nwindow.dmTripReset=function(){trip=0;maxSog=0;moveMs=0;$('d-trip').textContent='0.00';$('d-max').textContent='0.0';$('d-avg').textContent='0.0';$('d-time').textContent='0:00';};\nwindow.dmAnchorSet=function(){\n  dmGpsStart();\n  if(!last){$('lv-stat').textContent='Waiting for a fix to drop the pin\u2026';var iv=setInterval(function(){if(last){clearInterval(iv);dmAnchorSet();}},800);return;}\n  anchor={lat:last.lat,lng:last.lng};anchMax=0;trail=[];armed=true;dmAlarmStop();\n  $('an-set').textContent='&#x2693; Pin dropped \u2014 re-drop';\n  dmPlot(0);\n};\nwindow.dmAnchorClear=function(){anchor=null;armed=false;dmAlarmStop();$('a-dist').textContent='\u2013';$('a-brg').textContent='\u2013';$('a-max').textContent='\u2013';$('an-set').textContent='&#x2693; Drop pin at current position';var cv=$('a-cv');cv.getContext('2d').clearRect(0,0,cv.width,cv.height);};\nfunction beep(){try{\n  if(!alarmCtx)alarmCtx=new (window.AudioContext||window.webkitAudioContext)();\n  var o=alarmCtx.createOscillator(),g=alarmCtx.createGain();\n  o.connect(g);g.connect(alarmCtx.destination);\n  o.frequency.value=880;g.gain.value=0.6;\n  o.start();o.stop(alarmCtx.currentTime+0.35);\n}catch(e){}}\nfunction dmAlarmStart(){\n  if(alarmOn)return;alarmOn=true;\n  document.getElementById('dm-live-tool').className='dm-tool alarming';\n  $('an-stop').style.display='inline-block';\n  beep();if(navigator.vibrate)navigator.vibrate([500,200,500]);\n  alarmInt=setInterval(function(){beep();if(navigator.vibrate)navigator.vibrate(400);},1200);\n}\nwindow.dmAlarmStop=function(){\n  alarmOn=false;clearInterval(alarmInt);\n  document.getElementById('dm-live-tool').className='dm-tool';\n  $('an-stop').style.display='none';\n};\nwindow.dmAlarmTest=function(){dmAlarmStart();setTimeout(dmAlarmStop,2600);};\nfunction dmPlot(curDist){\n  var cv=$('a-cv'),ctx=cv.getContext('2d'),W=cv.width,H=cv.height,cx=W\/2,cy=H\/2;\n  var rad=parseFloat($('an-rad').value)||45;\n  var span=Math.max(rad*1.4,curDist*1.2,20);\n  var sc=(Math.min(W,H)\/2-16)\/span;\n  ctx.clearRect(0,0,W,H);\n  ctx.strokeStyle='#28527c';ctx.lineWidth=1;\n  [0.5,1].forEach(function(f){ctx.beginPath();ctx.arc(cx,cy,rad*f*sc,0,7);ctx.stroke();});\n  ctx.strokeStyle=alarmOn?'#ff5544':'#00A8FF';ctx.lineWidth=2.5;\n  ctx.beginPath();ctx.arc(cx,cy,rad*sc,0,7);ctx.stroke();\n  ctx.fillStyle='#8fd4ff';ctx.font='12px Helvetica';ctx.fillText(rad+' m',cx+rad*sc*0.71+4,cy-rad*sc*0.71-4);\n  if(anchor){\n    ctx.fillStyle='#f6f4ed';ctx.beginPath();ctx.arc(cx,cy,4,0,7);ctx.fill();\n    ctx.strokeStyle='rgba(143,212,255,0.6)';ctx.lineWidth=1.5;ctx.beginPath();\n    trail.forEach(function(p,i){\n      var d=dist(anchor,p),b=brg(anchor,p)*D2R;\n      var x=cx+Math.sin(b)*d*sc,y=cy-Math.cos(b)*d*sc;\n      if(i===0)ctx.moveTo(x,y);else ctx.lineTo(x,y);\n    });\n    ctx.stroke();\n    if(last){var d2=dist(anchor,last),b2=brg(anchor,last)*D2R;\n      var bx=cx+Math.sin(b2)*d2*sc,by=cy-Math.cos(b2)*d2*sc;\n      ctx.fillStyle=alarmOn?'#ff5544':'#2eae4e';ctx.beginPath();ctx.arc(bx,by,7,0,7);ctx.fill();}\n  }\n}\nwindow.dmWptSet=function(){\n  var la=parseFloat($('w-lat').value),ln=parseFloat($('w-lng').value);\n  if(isNaN(la)||isNaN(ln)||Math.abs(la)>90||Math.abs(ln)>180){$('w-note').innerHTML='<span style=\"color:#c0392b;font-weight:700\">Enter a valid decimal latitude and longitude.<\/span>';return;}\n  mob=null;wpt={lat:la,lng:ln};dmGpsStart();dmLTab('wpt');\n};\nwindow.dmMOB=function(){\n  dmGpsStart();\n  if(!last){var iv=setInterval(function(){if(last){clearInterval(iv);dmMOB();}},500);return;}\n  mob={lat:last.lat,lng:last.lng};\n  dmLTab('wpt');\n  $('w-note').innerHTML='<strong style=\"color:#e67e00\">MOB marked at '+fmtPos(mob)+'<\/strong> \u2014 range and bearing above lead BACK to that point. Shout, throw, point, press your DSC alert; this marker is one more aid, not the rescue.';\n  beep();if(navigator.vibrate)navigator.vibrate([300,150,300]);\n};\nwindow.dmNightL=function(){var el=document.getElementById('dm-live-tool');var isN=el.className.indexOf('dm-night')>-1;el.className=el.className.replace(' dm-night','');if(!isN){el.className+=' dm-night';}document.getElementById('lv-night').textContent=!isN?'\\u2600 Day':'\\u263D Night';};\nwindow.dmWake=async function(){\n  try{\n    if(wakeLock){await wakeLock.release();wakeLock=null;$('lv-wake').textContent='Keep screen awake';return;}\n    wakeLock=await navigator.wakeLock.request('screen');\n    $('lv-wake').textContent='Screen staying awake \u2713';\n    wakeLock.addEventListener('release',function(){$('lv-wake').textContent='Keep screen awake';wakeLock=null;});\n    document.addEventListener('visibilitychange',async function(){\n      if(document.visibilityState==='visible'&&!wakeLock){try{wakeLock=await navigator.wakeLock.request('screen');$('lv-wake').textContent='Screen staying awake \u2713';}catch(e){}}\n    });\n  }catch(e){$('lv-wake').textContent='Screen lock not supported here';}\n};\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0430\u0448 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043a\u0430\u043a \u043f\u0430\u043b\u0443\u0431\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u044b: \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c GPS \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0436\u0443\u0440\u043d\u0430\u043b \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e \u0441\u043e\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u043d\u0438\u0438 \u044f\u043a\u043e\u0440\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u044e \u043d\u043e\u0447\u044c, \u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u043e \u043f\u0443\u0442\u0435\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a, \u043f\u0435\u043b\u0435\u043d\u0433 \u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0431\u044b\u0442\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u0430\u0440\u043a\u0435\u0440 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u0437\u0430 \u0431\u043e\u0440\u0442. \u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0431\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438. \u2691 MOB \u2014 \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. GPS \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u2014 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0421\u0442\u0430\u0440\u0442\u00bb \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u0438\u0431\u043e\u0440\u0435. \u263d \u041d\u043e\u0447\u044c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u044d\u043a\u0440\u0430\u043d \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u2026<\/p>","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-8426","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/pages\/8426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/comments?post=8426"}],"version-history":[{"count":0,"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/pages\/8426\/revisions"}],"wp:attachment":[{"href":"https:\/\/drakemarine.com\/ru\/wp-json\/wp\/v2\/media?parent=8426"}],"curies":[{"name":"WP","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}