(lat1, lng1, lat2, lng2, offset)
| 1765 | } |
| 1766 | |
| 1767 | function latlngInterPoint(lat1, lng1, lat2, lng2, offset) { |
| 1768 | lat1 = lat1 * Math.PI / 180.0; |
| 1769 | lng1 = lng1 * Math.PI / 180.0; |
| 1770 | lat2 = lat2 * Math.PI / 180.0; |
| 1771 | lng2 = lng2 * Math.PI / 180.0; |
| 1772 | |
| 1773 | var d = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin((lat1 - lat2) / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin((lng1 - lng2) / 2), 2))); |
| 1774 | var A = Math.sin((1 - offset) * d) / Math.sin(d); |
| 1775 | var B = Math.sin(offset * d) / Math.sin(d); |
| 1776 | var x = A * Math.cos(lat1) * Math.cos(lng1) + B * Math.cos(lat2) * Math.cos(lng2); |
| 1777 | var y = A * Math.cos(lat1) * Math.sin(lng1) + B * Math.cos(lat2) * Math.sin(lng2); |
| 1778 | var z = A * Math.sin(lat1) + B * Math.sin(lat2); |
| 1779 | var lat = Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))) * 180 / Math.PI; |
| 1780 | var lng = Math.atan2(y, x) * 180 / Math.PI; |
| 1781 | |
| 1782 | return { |
| 1783 | lat: lat, |
| 1784 | lng: lng |
| 1785 | }; |
| 1786 | } |
| 1787 | |
| 1788 | function xyzFromLatLng(lat, lng, radius) { |
| 1789 | var phi = (90 - lat) * Math.PI / 180; |
no test coverage detected