مكتبة لتوفير العمليات الجغرافية المكانية الأساسية مثل حساب المسافة ، وتحويل الإحداثيات العشرية إلى جنسيات العكس والعكس بالعكس ، إلخ
يمكن العثور على تغيير مفصل في changelog.md
npm install geolibyarn add geolibهناك بناء UMD وبناء وحدة ES . يمكنك إما استخدام UMD Build in Node مثل أي مكتبة أخرى:
const geolib = require ( 'geolib' ) ;أو في المتصفح باستخدام عنصر نص بسيط:
< script src =" lib/geolib.js " > </ script > إذا قمت بتحميله في المتصفح ، فيمكنك الوصول إلى جميع الوظائف عبر window.geolib .
إذا كنت تعمل مع Bundler (مثل WebPack أو Parcel) أو لديك بيئة تدعم وحدات ES أصليًا ، فيمكنك إما استيراد وظائف معينة من الحزمة مباشرة:
import { getDistance } from 'geolib' ;أو تحميل المكتبة بأكملها:
import * as geolib from 'geolib' ;أو يمكنك استيراد وظائف واحدة مباشرة للاستفادة من Treeshing (الموصى بها):
import getDistance from 'geolib/es/getDistance' ; هذه المكتبة مكتوبة في TypeScript. ليس عليك معرفة TypeScript لاستخدام Geolib ولكن تعريفات النوع تمنحك معلومات قيمة حول الاستخدام العام ومعلمات الإدخال وما إلى ذلك.
جميع الطرق التي تعمل مع الإحداثيات تقبل إما كائن مع lat / latitude وخاصية lon / lng / longitude ، أو مجموعة الإحداثيات Geojson ، مثل: [lon, lat] . يمكن أن تكون جميع القيم إما في تنسيق عشري ( 53.471 ) أو جنسيات ( 53° 21' 16" ).
تطفو قيم المسافة دائمًا وتمثل المسافة بالأمتار .
getDistance(start, end, accuracy = 1)يحسب المسافة بين إحداثيات جغرافية.
هذه الوظيفة تأخذ ما يصل إلى 3 وسيطات. يجب أن تكون الوسيطة 2 صالحة GeolibInputCoordinates (على سبيل المثال {latitude: 52.518611, longitude: 13.408056} ). يمكن أن تكون الإحداثيات في تنسيق جنسي أو عشري. الحجة الثالثة هي الدقة (بالأمتار). بشكل افتراضي ، تكون الدقة 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) يحسب المسافة بين إحداثيات جغرافية. هذه الطريقة أكثر دقة ثم getDistance ، خاصة بالنسبة للمسافات الطويلة ولكنها أبطأ أيضًا. إنه يستخدم الصيغة العكسية فينسين للسيارات الإهليلجية.
يستغرق الأمر نفس الحجج (حتى 3) مثل getDistance .
geolib . getPreciseDistance (
{ latitude : 51.5103 , longitude : 7.49347 } ,
{ latitude : "51° 31' N" , longitude : "7° 28' E" }
) ;getCenter(coords)يحسب المركز الجغرافي لجميع النقاط في مجموعة من الإحداثيات الجيولوجية. يأخذ مجموعة من الإحداثيات ويحسب مركزه.
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)يحسب مركز حدود الإحداثيات الجغرافية.
يأخذ مجموعة من الإحداثيات ، وحساب حدود هؤلاء ، ويعيد مركز ذلك المستطيل.
على المضلعات مثل الحدود السياسية (مثل الدول) ، قد يعطي هذا نتيجة أوثق للتوقعات البشرية ، من 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)يحسب حدود الإحداثيات الجغرافية.
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 و Great Circle على ويكيبيديا. يجب أن يكون خط Rhumb على ما يرام في معظم الحالات:
http://en.wikipedia.org/wiki/rhumb_line#general_and_mathematicy_description
تعتمد الوظيفة اعتمادًا كبيرًا على إصدار PHP الرائع لـ Doug Vanderwide (مرخصة بموجب GPL 3.0)
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)فرز مجموعة من التنسيقات عن طريق المسافة إلى إحداثي مرجعي.
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)يحول إحداثي عشري إلى التنسيق الجنسي
geolib . decimalToSexagesimal ( 51.49611111 ) ; // -> 51° 29' 46`إرجاع القيمة الجديدة كسلسلة جنسية.
geolib.getLatitude(point, raw = false)geolib.getLongitude(point, raw = false)إرجاع خط العرض/خط الطول لنقطة معينة ويحوله إلى عشرية. إذا تم ضبط الوسيطة الثانية على TRUE ، فإنها لا تقوم بتحويل القيمة إلى عشرية.
geolib . getLatitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 51.49611
geolib . getLongitude ( { lat : 51.49611 , lng : 7.38896 } ) ; // -> 7.38896إرجاع القيمة على أنها عشرية أو بتنسيقها الأصلي إذا تم ضبط الوسيطة الثانية على TRUE.
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)يحسب نقطة الوجهة التي تعطى نقطة أولية ، مسافة (بالأمتار) ومحمل (بالدرجات). إذا لم يتم إعطاء دائرة نصف قطرها الافتراضية إلى دائرة نصف قطر الأرض المتوسطة البالغ 6371000 متر.
الانتباه: هذه الصيغة ليست دقيقة بنسبة 100 ٪ (ولكنها قريبة جدًا).
geolib . computeDestinationPoint (
{ latitude : 52.518611 , longitude : 13.408056 } ,
15000 ,
180
) ; geolib . computeDestinationPoint (
[ 13.408056 , 52.518611 ]
15000 ,
180
) ;إرجاع الوجهة بنفس تنسيق الإحداثيات الإدخال. لذلك إذا قمت بتمرير نقطة Geojson ، فستحصل على نقطة 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)يحول النص المعروف (ويعرف أيضًا باسم WKT) إلى المضلع الذي يفهمه Geolib. https://en.wikipedia.org/wiki/well-nawnay_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 مرة واحدة لأنني كنت بحاجة إلى حفنة من الأساليب لأداء مهام جغرافية محددة للغاية مثل الحصول على المسافة أو الاتجاه بين نقطتين. نظرًا لأنها كانت واحدة من أوائل المكتبات في NPM في ذلك الوقت للقيام بهذا النوع من الأشياء بطريقة بسيطة للغاية ، فقد أصبحت شائعة جدًا (مع أكثر من 300 ألف تنزيل شهريًا اعتبارًا من أبريل 2019!) ونتيجة لذلك حصلت على الكثير من المساهمات على مر السنين. العديد منها اندمجت للتو طالما كان لديهم اختبارات مصاحبة ، دون النظر إلى الاتساق أو الاتفاقيات أو التعقيد أو أسلوب الترميز أو حتى الجودة الشاملة للوظائف التي لم أفهمها في بعض الأحيان.
لقد قمت الآن بتنظيف قاعدة قاعدة الشفرة بالكامل ، وأعيد بناء المكتبة بأكملها "من الصفر" ، وتوحيد جميع وسيطات الوظائف ، وإزالة بعض الوظائف التي لم أكن متأكدًا مما إذا كان ينبغي أن يكون هنا (لا تتردد في إضافتها إلى استخدامها!) أو إذا تم استخدامها (هل فعلت بعض عمليات البحث على github لأسماء الوظائف ، تحولت إلى وجود نتائج Zero).
تم إسقاط دعم الارتفاع ، بالإضافة إلى بعض الوظائف التي جعلت المكتبة كبيرة الحجم بشكل غير ضروري (على سبيل المثال isPointInsideRobust كان هناك أكثر من 700 [!] خطوط رمز وتم أخذها بشكل أساسي من مكتبة مختلفة).
لقد أزلت Grunt من عملية الإنشاء ، وأضافت أدوات "حديثة" مثل Eslint و أجمل. لقد تحولت من Travis CI إلى Circle CI وأنا بصدد زيادة أتمتة عملية إصدار الإصدارات الجديدة باستخدام semantic-release والوحدات conventional-commits . لقد تحولت أيضًا من JavaScript النقي إلى TypeScript لأنني أعتقد أن لديها بعض الفوائد.
getDistance الافتراضية من كونها بوابة بطيئة ودقيقة إلى كونها سريعة وغير دقيقة بعض الشيء. تتم الآن تسمية وظيفة getDistance القديمة getPreciseDistance بينما أصبحت وظيفة getDistanceSimple القديمة الآن وظيفة getDistance الافتراضية. ومع ذلك ، يمكنك تمرير getPreciseDistance كوسيطة لأي وظيفة تستخدم حساب المسافة داخليًا.getBoundsOfDistance() الآن الإحداثيات الدقيقة بسبب إزالة القيد الاصطناعي 8 العشريgetCompassDirection() لا يعيد كائنًا بوجه دقيق واتجاه تقريبي ولكن فقط الاتجاه الدقيق كسلسلةgetCompassDirection() لم تعد سلسلة ("دائرة" أو "خط") ولكنها وظيفة لتحديد المحمل (يمكنك تمرير getRhumbLineBearing أو getGreatCircleBearing ). تستقبل الوظيفة الأصل والوجهة كوسيطة أول وثانية. إذا لم يتم تقديم حجة ثالثة ، يتم استخدام 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 -> Remamed to ConvertDistance ، لأن الاسم كان غامضًا جدًاuseDecimal أعيدت تسميته إلى toDecimaldecimal2sexagesimal أعيد تسميته إلى decimalToSexagesimalsexagesimal2decimal أعيدت تسميته إلى sexagesimalToDecimalgetDistance تم إعادة تسميتها إلى getPreciseDistancegetDistanceSimple أعيدت تسميته إلى getDistanceisPointInside أعيد تسميته إلى isPointInPolygonisPointInCircle أعيد تسميتها إلى isPointWithinRadiusgetBearing أعيدت اسمه إلى getGreatCircleBearing لتكون أكثر وضوحاgetElev -> تمت إزالتهelevation -> تمت إزالتهcoords -> تمت إزالته (قد يتم إعادة إضافةها على أنها getCoordinate أو getNormalizedCoordinate)ll -> تمت إزالته (لأن WTF؟)preparePolygonForIsPointInsideOptimized -> تمت إزالته بسبب الوثائق المفقودة والاختبارات المفقودةisPointInsideWithPreparedPolygon -> تمت إزالته بسبب الوثائق المفقودةisInside alias -> تمت إزالته (غامضة للغاية) - استخدام isPointInPolygon أو isPointWithinRadiuswithinRadius -> تمت إزالته ، استخدام isPointWithinRadiusgetDirection الاسم المستعار -> تمت إزالته (فوضى غير ضرورية) - استخدام getCompassDirectiongetAreaOfPolygon لحساب مساحة المضلعgetCoordinateKey للحصول على اسم خاصية (مثل lat أو lng لكائن يستند إلى مجموعة من الأسماء المحتملة)