ห้องสมุดเพื่อให้การดำเนินงานเชิงพื้นที่ขั้นพื้นฐานเช่นการคำนวณระยะทางการแปลงพิกัดทศนิยมให้เป็น sexagesimal และในทางกลับกัน ฯลฯ ห้องสมุดนี้ปัจจุบันเป็น 2D ซึ่งหมายความว่าระดับความสูง/ระดับความสูงยังไม่ได้รับการสนับสนุนโดยฟังก์ชั่นใด ๆ !
การเปลี่ยนแปลงโดยละเอียดสามารถพบได้ใน changelog.md
npm install geolibyarn add geolibมีการสร้าง UMD และ โมดูล ES คุณสามารถใช้ UMD build ในโหนดเช่นไลบรารีอื่น ๆ :
const geolib = require ( 'geolib' ) ;หรือในเบราว์เซอร์โดยใช้องค์ประกอบสคริปต์อย่างง่าย:
< script src =" lib/geolib.js " > </ script > หากคุณโหลดในเบราว์เซอร์คุณสามารถเข้าถึงฟังก์ชั่นทั้งหมดผ่าน window.geolib
หากคุณกำลังทำงานกับ Bundler (เช่น Webpack หรือพัสดุ) หรือมีสภาพแวดล้อมที่รองรับโมดูล ES โดยธรรมชาติคุณสามารถนำเข้าฟังก์ชั่นบางอย่างจากแพ็คเกจโดยตรง:
import { getDistance } from 'geolib' ;หรือโหลดห้องสมุดทั้งหมด:
import * as geolib from 'geolib' ;หรือคุณสามารถนำเข้าฟังก์ชั่นเดียวโดยตรงเพื่อใช้ประโยชน์จากการทำ treeshaking (แนะนำ):
import getDistance from 'geolib/es/getDistance' ; ไลบรารีนี้เขียนด้วย TypeScript คุณไม่จำเป็นต้องรู้ TypeScrip
วิธีการทั้งหมดที่ทำงานกับพิกัดยอมรับวัตถุที่มี lat / latitude และ คุณสมบัติ lon / lng / longitude หรือ อาร์เรย์พิกัด GeoJSON เช่น [lon, lat] ค่าทั้งหมดสามารถเป็นทั้งในรูปแบบทศนิยม ( 53.471 ) หรือ sexagesimal ( 53° 21' 16" ) รูปแบบ
ค่าระยะทางจะลอย อยู่เสมอ และแสดงระยะทางเป็น เมตร
getDistance(start, end, accuracy = 1)คำนวณระยะห่างระหว่างพิกัด GEO สองตัว
ฟังก์ชั่นนี้ใช้เวลามากถึง 3 อาร์กิวเมนต์ 2 อาร์กิวเมนต์แรกจะต้องถูกต้อง GeolibInputCoordinates (เช่น {latitude: 52.518611, longitude: 13.408056} ) พิกัดสามารถอยู่ในรูปแบบ sexagesimal หรือทศนิยม อาร์กิวเมนต์ที่สามคือความแม่นยำ (เป็นเมตร) โดยค่าเริ่มต้นความแม่นยำคือ 1 เมตร หากคุณต้องการผลลัพธ์ที่แม่นยำยิ่งขึ้นคุณสามารถตั้งค่าเป็นค่าที่ต่ำกว่าเช่น 0.01 เพื่อความแม่นยำเซนติเมตร คุณสามารถตั้งค่าให้สูงขึ้นเพื่อให้ได้ผลลัพธ์ที่ถูกปัดเศษเป็นค่าถัดไปที่หารด้วยความแม่นยำที่คุณเลือก (เช่น 25428 ด้วยความแม่นยำ 100 กลายเป็น 25400 )
getDistance (
{ latitude : 51.5103 , longitude : 7.49347 } ,
{ latitude : "51° 31' N" , longitude : "7° 28' E" }
) ; // Working with W3C Geolocation API
navigator . geolocation . getCurrentPosition (
( position ) => {
console . log (
'You are ' ,
geolib . getDistance ( position . coords , {
latitude : 51.525 ,
longitude : 7.4575 ,
} ) ,
'meters away from 51.525, 7.4575'
) ;
} ,
( ) => {
alert ( 'Position could not be determined.' ) ;
}
) ;ส่งคืนระยะทางเป็นเมตรเป็นค่าตัวเลข
getPreciseDistance(start, end, accuracy = 1) คำนวณระยะห่างระหว่างพิกัด GEO สองตัว วิธีนี้มีความแม่นยำมากขึ้นจากนั้น getDistance โดยเฉพาะอย่างยิ่งสำหรับระยะทางไกล แต่ก็ช้าลง มันใช้สูตรผกผัน Vincenty สำหรับวงรี
มันต้องใช้อาร์กิวเมนต์ (สูงสุด 3) ข้อโต้แย้งว่าเป็น getDistance
geolib . getPreciseDistance (
{ latitude : 51.5103 , longitude : 7.49347 } ,
{ latitude : "51° 31' N" , longitude : "7° 28' E" }
) ;getCenter(coords)คำนวณศูนย์กลางทางภูมิศาสตร์ของทุกจุดในการรวบรวมพิกัด GEO ใช้อาร์เรย์ของพิกัดและคำนวณศูนย์กลางของมัน
geolib . getCenter ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;ส่งคืนวัตถุ:
{
"latitude" : centerLat ,
"longitude" : centerLon
}getCenterOfBounds(coords)คำนวณศูนย์กลางของขอบเขตของพิกัด GEO
ใช้อาร์เรย์ของพิกัดคำนวณเส้นขอบของสิ่งเหล่านั้นและให้กึ่งกลางของสี่เหลี่ยมนั้นกลับมา
เกี่ยวกับรูปหลายเหลี่ยมเช่นพรมแดนทางการเมือง (เช่นรัฐ) สิ่งนี้อาจให้ผลลัพธ์ที่ใกล้ชิดกับความคาดหวังของมนุษย์มากกว่า getCenter เพราะฟังก์ชั่นนั้นสามารถถูกรบกวนจากการกระจายของจุดที่ไม่สม่ำเสมอในด้านที่แตกต่างกัน
ลองนึกภาพรัฐโอคลาโฮมาของสหรัฐอเมริกา: getCenter ที่ให้จุดใต้เพราะชายแดนภาคใต้มีโหนดมากกว่าคนอื่น ๆ
geolib . getCenterOfBounds ( [
{ latitude : 51.513357512 , longitude : 7.45574331 } ,
{ latitude : 51.515400598 , longitude : 7.45518541 } ,
{ latitude : 51.516241842 , longitude : 7.456494328 } ,
{ latitude : 51.516722545 , longitude : 7.459863183 } ,
{ latitude : 51.517443592 , longitude : 7.463232037 } ,
] ) ;ส่งคืนวัตถุ:
{
"latitude" : centerLat ,
"longitude" : centerLng
}getBounds(points)คำนวณขอบเขตของพิกัด GEO
geolib . getBounds ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;มันส่งคืนละติจูดขั้นต่ำและสูงสุดและลองจิจูดต่ำสุดและสูงสุดเป็นวัตถุ:
{
"minLat" : minimumLatitude ,
"maxLat" : maximumLatitude ,
"minLng" : minimumLongitude ,
"maxLng" : maximumLongitude ,
}isPointInPolygon(point, polygon)ตรวจสอบว่าจุดหนึ่งอยู่ในรูปหลายเหลี่ยมหรือไม่
geolib . isPointInPolygon ( { latitude : 51.5125 , longitude : 7.485 } , [
{ latitude : 51.5 , longitude : 7.4 } ,
{ latitude : 51.555 , longitude : 7.4 } ,
{ latitude : 51.555 , longitude : 7.625 } ,
{ latitude : 51.5125 , longitude : 7.625 } ,
] ) ; ส่งคืน true หรือ false
isPointWithinRadius(point, centerPoint, radius)ตรวจสอบว่าจุดอยู่ในวงกลมหรือไม่
// checks if 51.525/7.4575 is within a radius of 5 km from 51.5175/7.4678
geolib . isPointWithinRadius (
{ latitude : 51.525 , longitude : 7.4575 } ,
{ latitude : 51.5175 , longitude : 7.4678 } ,
5000
) ; ส่งคืน true หรือ false
getRhumbLineBearing(origin, destination)รับร่องรัศมีสองจุด ค้นหาข้อมูลเกี่ยวกับความแตกต่างระหว่างสาย rhumb และวงกลมที่ยอดเยี่ยมบนวิกิพีเดีย สาย rhumb ควรจะดีในกรณีส่วนใหญ่:
http://en.wikipedia.org/wiki/rhumb_line#general_and_mathematical_description
ฟังก์ชั่นนั้นขึ้นอยู่กับรุ่น PHP ที่ยอดเยี่ยมของ Doug Vanderweide (ได้รับอนุญาตภายใต้ GPL 3.0) http://www.dougv.com/2009/07/13/calculating-the-bearing และ Compass-Rose-Direction
geolib . getRhumbLineBearing (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ;ส่งคืนแบริ่งที่คำนวณได้เป็นจำนวน
getGreatCircleBearing(origin, destination)รับแบริ่งวงกลมที่ยอดเยี่ยมสองจุด สิ่งนี้แม่นยำกว่าแบริ่งสาย rhumb แต่ก็ช้ากว่า
geolib . getGreatCircleBearing (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ;ส่งคืนแบริ่งที่คำนวณได้เป็นจำนวน
getCompassDirection(origin, destination, bearingFunction = getRhumbLineBearing) รับทิศทางเข็มทิศจากพิกัดต้นทางไปยังพิกัดปลายทาง เป็นทางเลือกฟังก์ชั่นเพื่อกำหนดว่าแบริ่งสามารถส่งผ่านเป็นพารามิเตอร์ที่สาม ค่าเริ่มต้นคือ getRhumbLineBearing
geolib . getCompassDirection (
{ latitude : 52.518611 , longitude : 13.408056 } ,
{ latitude : 51.519475 , longitude : 7.46694444 }
) ; ส่งคืนทิศทาง (เช่น NNE , SW , E , …) เป็นสตริง
orderByDistance(point, arrayOfPoints)เรียงลำดับอาร์เรย์ของ Coords โดยระยะทางไปยังพิกัดอ้างอิง
geolib . orderByDistance ( { latitude : 51.515 , longitude : 7.453619 } , [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.518 , longitude : 7.45425 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;ส่งคืนอาร์เรย์ของคะแนนที่สั่งโดยระยะทางไปยังจุดอ้างอิง
findNearest(point, arrayOfPoints) ค้นหาจุดเดียวที่ใกล้ที่สุดกับพิกัดอ้างอิง จริงๆแล้วมันเป็นเพียงวิธีการอำนวยความสะดวกที่ใช้ orderByDistance ภายใต้ประทุนและส่งคืนผลลัพธ์แรก
geolib . findNearest ( { latitude : 52.456221 , longitude : 12.63128 } , [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
{ latitude : 55.751667 , longitude : 37.617778 } ,
{ latitude : 48.8583 , longitude : 2.2945 } ,
{ latitude : 59.3275 , longitude : 18.0675 } ,
{ latitude : 59.916911 , longitude : 10.727567 } ,
] ) ;ส่งคืนจุดที่ใกล้ที่สุดไปยังจุดอ้างอิง
getPathLength(points, distanceFunction = getDistance) คำนวณความยาวของการรวบรวมพิกัด คาดว่าอาร์เรย์ของคะแนนเป็นอาร์กิวเมนต์แรกและเป็นทางเลือกในการกำหนดระยะทางเป็นอาร์กิวเมนต์ที่สอง ค่าเริ่มต้นคือ getDistance
geolib . getPathLength ( [
{ latitude : 52.516272 , longitude : 13.377722 } ,
{ latitude : 51.515 , longitude : 7.453619 } ,
{ latitude : 51.503333 , longitude : - 0.119722 } ,
] ) ;ส่งคืนความยาวของเส้นทางเป็นเมตรเป็นจำนวน
getDistanceFromLine(point, lineStart, lineEnd, accuracy = 1)ได้รับระยะทางขั้นต่ำจากจุดหนึ่งถึงสองจุด
geolib . getDistanceFromLine (
{ latitude : 51.516 , longitude : 7.456 } ,
{ latitude : 51.512 , longitude : 7.456 } ,
{ latitude : 51.516 , longitude : 7.459 }
) ;ส่งคืนระยะทางที่สั้นที่สุดไปยังบรรทัดที่กำหนดเป็นหมายเลข
หมายเหตุ: หากทุกจุดอยู่ใกล้กันฟังก์ชั่นอาจส่งคืน NAN ในกรณีนี้มันมักจะช่วยเพิ่มความแม่นยำเล็กน้อย (เช่น 0.01 )
getBoundsOfDistance(point, distance)คำนวณพิกัดขอบเขตของทุกจุดบนพื้นผิวของโลกน้อยกว่าหรือเท่ากับระยะทางวงกลมที่ดีที่ระบุ
geolib . getBoundsOfDistance (
{ latitude : 34.090166 , longitude : - 118.276736555556 } ,
1000
) ;ส่งคืนอาร์เรย์ด้วยพิกัดทางตะวันตกเฉียงใต้และตะวันออกเฉียงเหนือ
isPointInLine(point, lineStart, lineEnd)คำนวณหากจุดที่กำหนดอยู่ในบรรทัดที่เกิดขึ้นโดยเริ่มต้นและสิ้นสุด
geolib . isPointInLine (
{ latitude : 0 , longitude : 10 } ,
{ latitude : 0 , longitude : 0 } ,
{ latitude : 0 , longitude : 15 }
) ;sexagesimalToDecimal(value)แปลงพิกัดทางเพศเป็นรูปแบบทศนิยม
geolib . sexagesimalToDecimal ( `51° 29' 46" N` ) ;ส่งคืนค่าใหม่เป็นเลขทศนิยม
decimalToSexagesimal(value)แปลงพิกัดทศนิยมเป็นรูปแบบ sexagesimal
geolib . decimalToSexagesimal ( 51.49611111 ) ; // -> 51° 29' 46`ส่งคืนค่าใหม่เป็นสตริง sexagesimal
geolib.getLatitude(point, raw = false)geolib.getLongitude(point, raw = false)ส่งคืนละติจูด/ลองจิจูดสำหรับจุดที่กำหนด และ แปลงเป็นทศนิยม หากอาร์กิวเมนต์ที่สองถูกตั้งค่าเป็นจริงมันจะ ไม่ แปลงค่าเป็นทศนิยม
geolib . getLatitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 51.49611
geolib . getLongitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 7.38896ส่งคืนค่าเป็นทศนิยมหรือในรูปแบบดั้งเดิมหากอาร์กิวเมนต์ที่สองถูกตั้งค่าเป็นจริง
toDecimal(point) ตรวจสอบว่าพิกัดอยู่ในรูปแบบทศนิยมอยู่แล้วและถ้าไม่ได้แปลงเป็น ทำงานกับค่าเดียว (เช่น 51° 32' 17" ) และพิกัดที่สมบูรณ์ (เช่น {lat: 1, lon: 1} ) ตราบใดที่มันอยู่ในรูปแบบที่รองรับ
geolib . toDecimal ( `51° 29' 46" N` ) ; // -> 51.59611111
geolib . toDecimal ( 51.59611111 ) ; // -> 51.59611111ส่งคืนค่าทศนิยมสำหรับค่าอินพุตที่กำหนด
computeDestinationPoint(point, distance, bearing, radius = earthRadius)คำนวณจุดปลายทางที่กำหนดจุดเริ่มต้นระยะทาง (เป็นเมตร) และแบริ่ง (ในองศา) หากไม่มีรัศมีจะได้รับค่าเริ่มต้นของรัศมีเฉลี่ยของโลกที่ 6,371,000 เมตร
ความสนใจ: สูตรนี้ไม่ถูกต้อง 100% (แต่ใกล้มาก)
geolib . computeDestinationPoint (
{ latitude : 52.518611 , longitude : 13.408056 } ,
15000 ,
180
) ; geolib . computeDestinationPoint (
[ 13.408056 , 52.518611 ]
15000 ,
180
) ;ส่งคืนปลายทางในรูปแบบเดียวกันกับพิกัดอินพุต ดังนั้นหากคุณผ่านจุด Geojson คุณจะได้รับจุดทางภูมิศาสตร์
getAreaOfPolygon(points)คำนวณพื้นที่ผิวของรูปหลายเหลี่ยม
geolib . getAreaOfPolygon ( [
[ 7.453635617650258 , 51.49320556213869 ] ,
[ 7.454583481047989 , 51.49328893754685 ] ,
[ 7.454778172179346 , 51.49240881084831 ] ,
[ 7.453832678225655 , 51.49231619246726 ] ,
[ 7.453635617650258 , 51.49320556213869 ] ,
] ) ;ส่งคืนผลลัพธ์เป็นจำนวนในตารางเมตร
getCoordinateKeys(point)รับชื่อคุณสมบัติของที่ใช้ในจุดในรูปแบบปกติ:
geolib . getCoordinateKeys ( { lat : 1 , lon : 1 } ) ;
// -> { latitude: 'lat', longitude: 'lon' } ส่งคืนวัตถุด้วย latitude และคุณสมบัติ longitude ค่าของพวกเขาคือชื่อคุณสมบัติสำหรับละติจูดและลองจิจูดที่ใช้ในจุดที่ผ่านมา น่าจะใช้ภายในเท่านั้น
getCoordinateKey(point, keysToLookup) ใช้โดย getCoordinateKeys ภายใต้ประทุนและส่งคืนชื่อคุณสมบัติออกจากรายการชื่อที่เป็นไปได้
geolib . getCoordinateKey ( { latitude : 1 , longitude : 2 } , [ 'lat' , 'latitude' ] ) ;
// -> latitude ส่งคืนชื่อของคุณสมบัติเป็นสตริงหรือ undefined หากไม่มีการจับคู่
isValidCoordinate(point)ตรวจสอบว่าจุดที่กำหนดมีอย่างน้อย ละติจูด และ ลองจิจูด และอยู่ในรูปแบบที่รองรับ
// true:
geolib . isValidCoordinate ( { latitude : 1 , longitude : 2 } ) ;
// false, longitude is missing:
geolib . isValidCoordinate ( { latitude : 1 } ) ;
// true, GeoJSON format:
geolib . isValidCoordinate ( [ 2 , 1 ] ) ; ส่งคืน true หรือ false
getSpeed(startPointWithTime, endPointWithTime)คำนวณความเร็วระหว่างสองจุดภายในช่วงเวลาที่กำหนด
geolib . getSpeed (
{ latitude : 51.567294 , longitude : 7.38896 , time : 1360231200880 } ,
{ latitude : 52.54944 , longitude : 13.468509 , time : 1360245600880 }
) ;ส่งคืนความเร็วเป็นเมตรต่อวินาทีเป็นจำนวน
convertSpeed(value, unit) แปลงผลลัพธ์จาก getSpeed เป็นรูปแบบที่เป็นมิตรกับมนุษย์มากขึ้น หน่วยที่มีอยู่ในปัจจุบันคือ mph และ kmh
unit สามารถเป็นหนึ่งใน:
geolib . convertSpeed ( 29.8678 , 'kmh' ) ;ส่งคืนค่าที่แปลงเป็นหมายเลข
convertDistance(value, unit)แปลงระยะทางที่กำหนด (เป็นเมตร) เป็นหน่วยอื่น
unit สามารถเป็นหนึ่งใน:
geolib . convertDistance ( 14200 , 'km' ) ; // 14.2
geolib . convertDistance ( 500 , 'km' ) ; // 0.5ส่งคืนระยะทางที่แปลงเป็นหมายเลข
convertArea(value, unit) แปลงผลลัพธ์จาก getAreaForPolygon เป็นหน่วยอื่น
unit สามารถเป็นหนึ่งใน:
geolib . convertArea ( 298678 , 'km2' ) ) ;ส่งคืนพื้นที่ที่ถูกแปลงเป็นหมายเลข
wktToPolygon(wkt)แปลงข้อความที่รู้จักกันดี (aka wkt) เป็นรูปหลายเหลี่ยมที่ Geolib เข้าใจ https://en.wikipedia.org/wiki/well-known_text_representation_of_geometry#geometric_objects
geolib . wktToPolygon ( 'POLYGON ((30 10.54321, 40 40, 20 40, 10 20, 30 10))' ) ;
// [
// { latitude: 10.54321, longitude: 30 },
// { latitude: 40, longitude: 40 },
// { latitude: 40, longitude: 20 },
// { latitude: 20, longitude: 10 },
// { latitude: 10, longitude: 30 },}
// ]ส่งคืนอาร์เรย์ของพิกัด
ในเวอร์ชัน 3.0.0 ฉันพยายามที่จะ กลับไปที่ราก เล็กน้อย Geolib ได้เริ่มต้นขึ้นเพราะฉันต้องการวิธีการจำนวนหนึ่งเพื่อดำเนินงานที่เกี่ยวข้องกับ GEO ที่เฉพาะเจาะจงมากเช่นการได้ระยะทางหรือทิศทางระหว่างสองจุด เนื่องจากเป็นหนึ่งในห้องสมุดแรกของ NPM ในตอนนั้นเพื่อทำสิ่งเหล่านี้ในวิธีที่ง่ายมากมันจึงกลายเป็นที่นิยมมาก (มีการดาวน์โหลดมากกว่า 300k ต่อเดือน ณ เดือนเมษายน 2019!) และผลที่ตามมาก็มีส่วนร่วมมากมายในช่วงหลายปีที่ผ่านมา หลายอย่างที่ฉันเพิ่งรวมกันตราบเท่าที่พวกเขามีการทดสอบโดยไม่ต้องดูความสอดคล้องการประชุมความซับซ้อนสไตล์การเข้ารหัสหรือแม้แต่คุณภาพโดยรวมของฟังก์ชั่นที่บางครั้งฉันก็ไม่เข้าใจ
ตอนนี้ฉันได้ทำความสะอาด codebase อย่างสมบูรณ์สร้างห้องสมุดทั้งหมดใหม่ "จากศูนย์" รวมข้อโต้แย้งฟังก์ชันทั้งหมดลบฟังก์ชั่นสองสามอย่างที่ฉันไม่แน่ใจว่าควรอยู่ที่นี่ (อย่าลังเลที่จะเพิ่มพวกเขากลับมาใช้!) หรือหากพวกเขาถูกใช้
การสนับสนุนระดับความสูงลดลงเช่นเดียวกับฟังก์ชั่นบางอย่างที่ทำให้ห้องสมุดมีขนาดใหญ่มากโดยไม่จำเป็น (เช่น isPointInsideRobust เพียงอย่างเดียวมีมากกว่า 700 [!] บรรทัดของรหัสและถูกนำมาจากห้องสมุดที่แตกต่างกัน)
ฉันลบคำรามออกจากกระบวนการสร้างเพิ่มเครื่องมือ "ทันสมัย" เช่น Eslint และ Prettier ฉันเปลี่ยนจาก Travis CI เป็น Circle CI และฉันกำลังอยู่ในขั้นตอนของกระบวนการปล่อยรุ่นใหม่โดยอัตโนมัติโดยใช้ semantic-release และ conventional-commits ฉันยังเปลี่ยนจากจาวาสคริปต์บริสุทธิ์เป็น typeScript เพราะฉันคิดว่ามันมีประโยชน์บางอย่าง
getDistance เริ่มต้นจากการเป็นคนช้าและแม่นยำเป็นวิธีที่รวดเร็วและไม่ถูกต้องเล็กน้อย ตอนนี้ฟังก์ชั่น getDistance เก่าได้รับการขนานนามว่า getPreciseDistance ในขณะที่ฟังก์ชั่น getDistanceSimple เก่าตอนนี้เป็นฟังก์ชัน getDistance เริ่มต้น อย่างไรก็ตามคุณสามารถผ่านการตอบ getPreciseDistance เป็นอาร์กิวเมนต์ไปยังฟังก์ชั่นใด ๆ ที่ใช้การคำนวณระยะทางภายในgetBoundsOfDistance() ตอนนี้ส่งคืนพิกัด ที่แน่นอน เนื่องจากการลบข้อ จำกัด ของทศนิยม 8 ตำแหน่งเทียมgetCompassDirection() ไม่คืนวัตถุอีกต่อไปด้วยทิศทาง ที่แน่นอน และ ขรุขระ แต่เฉพาะทิศทางที่แน่นอนเป็นสตริงgetCompassDirection() ไม่ใช่สตริง ("วงกลม", "บรรทัด") อีกต่อไป แต่ฟังก์ชั่นในการกำหนดแบริ่ง (คุณสามารถผ่าน getRhumbLineBearing หรือ getGreatCircleBearing ) ฟังก์ชั่นได้รับที่มาและปลายทางเป็นอาร์กิวเมนต์ที่หนึ่งและสอง หากไม่มีการโต้แย้งครั้งที่ 3 getRhumbLineBearing(origin, dest) จะถูกใช้โดยค่าเริ่มต้นroughCompassDirection(exact) หากคุณต้องการทิศทาง ที่ หยาบมาก (และอาจไม่ถูกต้องหรือไม่เหมาะสม) ดีกว่าอย่าใช้มันorderByDistance() ไม่ได้แก้ไขอินพุตอีกต่อไปดังนั้นจึงไม่เพิ่ม distance และคุณสมบัติ key ในพิกัดที่ส่งคืนgetSpeed() ตอนนี้จะถูกส่งกลับเป็น เมตรต่อวินาที เสมอ สามารถแปลงได้โดยใช้ฟังก์ชั่นความสะดวกสบายใหม่ convertSpeed(mps, targetUnit)findNearest() ไม่ได้ใช้ข้อโต้แย้ง offset และ limit ต่อไป เป็นเพียงวิธีการสะดวกสบายในการรับจุดเดียวที่ใกล้ที่สุดจากชุดพิกัด หากคุณต้องการมากกว่าหนึ่งให้ดูที่การใช้งานและใช้ตรรกะของคุณเองโดยใช้ orderByDistance52° 46' 21.0004" ในกรณีที่หายาก แต่ก็แม่นยำกว่าที่เคยเป็นมาcomputeDestinationPointgetBoundsgetBoundsOfDistancegetCentergetCenterOfBoundsgetCompassDirectiongetDistanceFromLinegetPathLengthgetRhumbLineBearinggetSpeedisDecimalisPointInLineisPointNearLineisSexagesimalorderByDistancegetKeys เปลี่ยนชื่อเป็น getCoordinateKeysvalidate การเปลี่ยนชื่อเป็น isValidCoordinategetLat เปลี่ยนชื่อเป็น getLatitudegetLon เปลี่ยนชื่อเป็น getLongitudelatitude -> เปลี่ยนชื่อเป็น getLatitudelongitude -> เปลี่ยนชื่อเป็น getLongitudeconvertUnit -> มีการแลกเปลี่ยนกับ ConvertDistance เพราะชื่อคลุมเครือเกินไปuseDecimal เปลี่ยนชื่อเป็น toDecimaldecimal2sexagesimal เปลี่ยนชื่อเป็น decimalToSexagesimalsexagesimal2decimal เปลี่ยนชื่อเป็น sexagesimalToDecimalgetDistance เปลี่ยนชื่อเป็น getPreciseDistancegetDistanceSimple เปลี่ยนชื่อเป็น getDistanceisPointInside เปลี่ยนชื่อเป็น isPointInPolygonisPointInCircle เปลี่ยนชื่อเป็น isPointWithinRadiusgetBearing เปลี่ยนชื่อเป็น getGreatCircleBearing ให้ชัดเจนยิ่งขึ้นgetElev -> ลบออกelevation -> ลบออกcoords -> ลบออก (อาจเพิ่มอีกครั้งเป็น getCoordince หรือ getNormalizedCoordine)ll -> ลบ (เพราะ wtf?)preparePolygonForIsPointInsideOptimized -> ลบออกเนื่องจากเอกสารที่ขาดหายไปและการทดสอบที่ขาดหายไปisPointInsideWithPreparedPolygon -> ลบออกเนื่องจากเอกสารที่ขาดหายไปisInside -> ลบ (คลุมเครือเกินไป) - ใช้ isPointInPolygon หรือ isPointWithinRadiuswithinRadius -> ลบออกใช้ isPointWithinRadiusgetDirection -> ลบออก (ความยุ่งเหยิงที่ไม่จำเป็น) - ใช้ getCompassDirectiongetAreaOfPolygon เพื่อคำนวณพื้นที่ของรูปหลายเหลี่ยมgetCoordinateKey เพื่อรับชื่อคุณสมบัติ (เช่น lat หรือ lng ของวัตถุตามอาร์เรย์ของชื่อที่เป็นไปได้)