<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Nap Osm je 11.4.2020 ob 22:40 napisal:<br>
</div>
<blockquote type="cite"
cite="mid:DBBPR09MB2999A4BA94621AEB7B03162E8CDF0@DBBPR09MB2999.eurprd09.prod.outlook.com">inoltre
viene inserito un messaggio nella nota quando viene selezionata la
posizione dalla mappa con la distanza dalla posizione originale
(in qualche misura a me sconosciuta, come ho detto mi sono
limitato a inserire una semplice formula geometrica, ma non sono
molto bravo con la trigonometria).</blockquote>
<br>
<tt>Se può servire posso consigliare di usare la libreria
GeographicLib.<br>
<br>
Ecco qui sotto un esempio come usarla in javascript.<br>
<br>
Saluti<br>
Damjan<br>
</tt><br>
<font color="#800000"><tt>=======================================================================</tt><tt><br>
</tt></font>
<pre id="line1"><font color="#800000"><span></span><span><<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value" style="">https://geographiclib.sourceforge.io/scripts/geographiclib.min.js</a>"></span><span></span><span></<span class="end-tag">script</span>></span><span>
<span id="line365"></span> </span><span><<span class="start-tag">script</span>></span><span>
<span id="line366"></span>
<span id="line367"></span>var geod = GeographicLib.Geodesic.WGS84,
<span id="line368"></span> dms = GeographicLib.DMS;
<span id="line369"></span>
function formatpoint(lat, lon, azi, dmsformat, prec) {
<span id="line374"></span> var trail;
<span id="line375"></span> prec += 5;
<span id="line376"></span> if (dmsformat) {
<span id="line377"></span> trail = prec </span><span>< </span><span>2 ? dms.DEGREE :
<span id="line378"></span> (prec </span><span>< </span><span>4 ? dms.MINUTE : dms.SECOND);
<span id="line379"></span> prec = prec </span><span>< </span><span>2 ? prec : (prec </span><span>< </span><span>4 ? prec - 2 : prec - 4);
<span id="line380"></span> return (dms.Encode(lat, trail, prec, dms.LATITUDE) + " " +
<span id="line381"></span> dms.Encode(lon, trail, prec, dms.LONGITUDE) + " " +
<span id="line382"></span> dms.Encode(azi, trail, prec, dms.AZIMUTH));
<span id="line383"></span> } else {
<span id="line384"></span> return (lat.toFixed(prec) + " " +
<span id="line385"></span> lon.toFixed(prec) + " " +
<span id="line386"></span> azi.toFixed(prec));
<span id="line387"></span> }
<span id="line388"></span>};
<span id="line389"></span>
<span id="line390"></span>function GeodesicInverse(lat1, lon1, lat2, lon2, dmsformat, prec) {
<span id="line391"></span> var result = {},
<span id="line392"></span> t, p1, p2;
<span id="line393"></span> try {
<span id="line394"></span> // Input is a blank-delimited line: lat1 lon1 lat2 lon2
<span id="line395"></span> t = [ lat1, lon1, lat2, lon2];
<span id="line396"></span> //t = t.replace(/^\s+/,"").replace(/\s+$/,"").split(/[\s,]+/,6);
<span id="line397"></span> if (t.length != 4)
<span id="line398"></span> throw new Error("Need 4 input items");
<span id="line399"></span> p1 = GeographicLib.DMS.DecodeLatLon(t[0], t[1]);
<span id="line400"></span> p2 = GeographicLib.DMS.DecodeLatLon(t[2], t[3]);
<span id="line401"></span> t = geod.Inverse(p1.lat, p1.lon, p2.lat, p2.lon,
<span id="line402"></span> GeographicLib.Geodesic.ALL |
<span id="line403"></span> GeographicLib.Geodesic.LONG_UNROLL);
<span id="line404"></span> result.status = "OK";
<span id="line405"></span> result.p1 = formatpoint(t.lat1, t.lon1, t.azi1, dmsformat, prec);
<span id="line406"></span> result.p2 = formatpoint(t.lat2, t.lon2, t.azi2, dmsformat, prec);
<span id="line407"></span> result.s12 = t.s12.toFixed(prec);
<span id="line408"></span> result.a12 = t.a12.toFixed(prec + 5);
<span id="line409"></span> result.m12 = t.m12.toFixed(prec);
<span id="line410"></span> result.M1221 = t.M12.toFixed(prec + 7) + " " + t.M21.toFixed(prec + 6);
<span id="line411"></span> result.S12 = t.S12.toFixed(Math.max(prec - 7, 0));
<span id="line412"></span> }
<span id="line413"></span> catch (e) {
<span id="line414"></span> result.status = "ERROR: " + e.message;
<span id="line415"></span> result.p1 = "";
<span id="line416"></span> result.p2 = "";
<span id="line417"></span> result.s12 = "";
<span id="line418"></span> result.a12 = "";
<span id="line419"></span> result.m12 = "";
<span id="line420"></span> result.M1221 = "";
<span id="line421"></span> result.S12 = "";
<span id="line422"></span> }
<span id="line423"></span> return result;
<span id="line424"></span>};
</span>=======================================================================
</font>
<span></span><span></span>
<span></span></pre>
</body>
</html>