geo-city-finder
Version:
A lightweight JavaScript library for identifying cities based on geographical coordinates and determining if provided coordinates match those of a city with high accuracy.
2 lines (1 loc) • 998 B
JavaScript
(function(e,i){typeof exports=="object"&&typeof module<"u"?i(exports):typeof define=="function"&&define.amd?define(["exports"],i):(e=typeof globalThis<"u"?globalThis:e||self,i(e.geoCityFinder={}))})(this,function(e){"use strict";const i=2546.076925492267,h=(t,n,o)=>{const s=g(t.latitude,t.longitude,n.latitude,n.longitude),a=t.accuracy+n.accuracy+o;return s<=a},g=(t,n,o,s)=>{const r=c(o-t),u=c(s-n),d=Math.sin(r/2)*Math.sin(r/2)+Math.cos(c(t))*Math.cos(c(o))*Math.sin(u/2)*Math.sin(u/2);return 6371*(2*Math.atan2(Math.sqrt(d),Math.sqrt(1-d)))},c=t=>t*(Math.PI/180);function l(t){return new Promise(n=>{navigator.geolocation||(console.log("Geolocation is not supported by this browser."),n(void 0)),navigator.geolocation.getCurrentPosition(o=>{const{latitude:s,longitude:a,accuracy:r}=o.coords,d=h({latitude:s,longitude:a,accuracy:r},t,i);n(d)},o=>{console.error("Error getting geolocation:",o),n(void 0)})})}e.getCoordinatesMatch=l,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});