Saya cuba mencari jalan untuk menyemak sama ada sepasang koordinat latitud/longitud berada dalam kawasan (dijana daripada koordinat latitud/longitud lain).
Sebagai contoh, jika kawasan saya ialah segi empat tepat yang dijana menggunakan koordinat ini:
43.672162 , -79.43585 43.629845 , -79.314585
Saya ingin menyemak sama ada koordinat ini berada dalam kawasan:
43.651989,-79.371993
Saya cuba menggunakan pakej ini tetapi tidak dapat berfungsi: github.com/kellydunn/golang-geo
p1 := geo.NewPoint(coords[0].LatX, coords[0].LonX) p2 := geo.NewPoint(coords[0].LatY, coords[0].LonY) geo.NewPolygon(p1, p2)
Saya tertanya-tanya sama ada sesiapa boleh berkongsi pelaksanaan ini, atau mempunyai sebarang sumber yang boleh menunjukkan saya ke arah yang betul? Saya juga bersedia menggunakan google maps api.
Dalam contoh anda ini ialah segi empat tepat, anda boleh mengiranya seperti ini:
minimumpoint.x = min(p1.x, p2.x)
和 minimumpoint.y = min(p1.y, p2.y)
maximumpoint.x = max(p1.x, p2.x)
和 maximumpoint.y = max(p1.y, p2.y)
checkpoint.x >=minimumpoint.x
和checkpoint.x <=maximumpoint.x
和checkpoint.y >=minimumpoint.y
和checkpoint.y <=maximumpoint.y
Atau anda boleh menggunakan fungsi mengandungi: https://www.php.cn/link/fb6e7c396949fea1f6f6bf144dbc7908
Tambahkan pada projek: go get github.com/paulmach/orb
Ini adalah contoh kod yang saya tulis untuk soalan anda:
package main import ( "fmt" "github.com/paulmach/orb" ) func main() { p1 := orb.point{43.672162, -79.43585} p2 := orb.point{43.629845, -79.314585} bound := orb.multipoint{p1, p2}.bound() fmt.printf("bound: %+v\n", bound) checklist := []orb.point{orb.point{43.651989, -79.371993}, p1, p2, orb.point{43, -79}} fmt.printf("\ncontains?\n") for _, checkpoint := range checklist { fmt.printf(" %+v:%t\n", checkpoint, bound.contains(checkpoint)) } }
Hasil:
bound: {Min:[43.629845 -79.43585] Max:[43.672162 -79.314585]} contains? [43.651989 -79.371993]:true [43.672162 -79.43585]:true [43.629845 -79.314585]:true [43 -79]:false
Atas ialah kandungan terperinci Semak sama ada titik latitud/longitud berada dalam kawasan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!