Saya bekerja dengan peta google dan poligon, tetapi saya harus memvalidasi bahwa poligon tidak saling tumpang tindih.
Saya memiliki fungsi yang mengembalikan BENAR ketika suatu titik (lat, lng) ada di dalam poligon, tetapi itu tidak cukup untuk menentukan apakah setiap titik poligon ada di dalam poligon lain.
Ada saran?
google-maps
overlapping-features
Marcelo Magarzo
sumber
sumber
Jawaban:
Contoh JSFiddle
Saya telah membuat JSFiddle yang menunjukkan solusi untuk masalah Anda menggunakan pustaka JavaScript Topology Suite (JSTS) (JSTS).
Penjelasan
Ada dua langkah untuk pendekatan ini. Langkah pertama mengubah geometri Google Anda menjadi ekspresi geometri WellKnownText (WKT) , yang merupakan format yang didukung secara luas. Langkah kedua menggunakan JSTS untuk melakukan
geometry.intersects()
perbandingan JSTS dari dua geometri WKT.Untuk benar-benar memahami ini, Anda harus memiliki pemahaman dasar tentang WKT. Karena geometri poligon di Google Map Anda bukan format yang didukung secara luas, saya segera mengonversinya menjadi geometri WKT sehingga kami dapat bekerja dengannya dalam JSTS.
Untuk melakukan ini dengan mudah, saya menggunakan perpustakaan Wicket . Tentu saja Anda selalu dapat melakukan home-roll metode Google-Polygon-to-WKT Anda sendiri, atau Anda dipersilakan untuk menggunakan metode yang saya tulis sekali waktu , atau Anda dapat menggunakan beberapa solusi lain yang mungkin Anda temukan. Secara pribadi, hari ini saya hanya menggunakan Wicket, yang seperti yang Anda lihat, adalah jahat-sederhana:
Berikutnya adalah daging dan kentang - menggunakan JSTS untuk mengambil dua geometri WKT dan menguji apakah mereka berpotongan atau tidak. Sekali lagi, dengan mengandalkan perpustakaan, tidak banyak yang bisa dilakukan:
Bagaimana saya menautkan perpustakaan di Fiddle
Biola yang ditautkan di atas, dan solusi yang saya contohkan memerlukan penambahan dua perpustakaan pihak ke-3 untuk proyek Anda - JSTS, dan Wicket. Mendapatkan kode dari Githubs masing-masing dan memasukkannya ke dalam proyek Anda adalah latihan yang berbeda. Tetapi untuk biola, saya menautkan ke perpustakaan-perpustakaan itu dengan mereferensikannya dalam contoh JSTS yang ada yang saya temukan diposting oleh Christopher Manning , serta halaman demo Wicket sendiri . Pada dasarnya saya membuka halaman, memilih "Lihat Sumber", dan memetik referensi yang relevan ke dua perpustakaan. Ini adalah titik akhir perpustakaan persis yang saya gunakan:
sumber