Menggunakan contoh berikut ini saya dapat mengubah ukuran berdasarkan skala dan asal.
polygonFeature.geometry.resize(scale, origin);
vectorLayer.redraw();
Tetapi apakah ada yang punya saran atau kode sampel tentang bagaimana saya akan mengubah ukuran poligon pada salah satu kapaknya?
Sebagai contoh: Saya ingin mengubah ukuran poligon oranye menjadi sesuatu seperti poligon merah. Jadi hanya tepi utara dan selatan yang bergerak sementara tepi barat timur tetap konstan.
EDIT # 1 Berikut ini adalah kasus penggunaan dan contoh data: Seorang pengguna hanya ingin sebagian dari persegi panjang oranye karena dia hanya tertarik pada garis pantai dan vendor satelit akan membebani lebih banyak untuk seluruh gambar. Pengguna perlu menentukan bagian gambar apa yang ingin mereka pesan.
Meskipun, saya tidak perlu seluruh solusi dengan ukuran menangani semua yang saya butuhkan adalah kemampuan untuk mengubah ukuran Ketinggian poligon .
EDIT # 2: Mungkin saya salah tentang ini. Saya membutuhkan solusi javascript (browser) openlayers dan tidak dapat kembali ke server untuk mengubah ukuran. Mungkin yang harus saya lakukan adalah interpolasi titik di sepanjang tepi timur dan barat dari geometri poligon (titik hitam). Kemudian buat dua garis (garis hijau) di mana pengguna dapat menyeret tetapi membatasi gerakan (draging) ke titik-titik yang diinterpolasi. Ketika pengguna "selesai" saya mendapatkan poligon kuning yang tersisa?
sumber
Jawaban:
Ini yang saya cari!
Contoh: http://openlayers.org/dev/examples/transform-feature.html
sumber
Dalam kasus umum, saya akan menggunakan transformasi perspektif untuk mengubah segiempat asli Anda menjadi satuan persegi dan kembali lagi.
Langkah-langkah dasarnya adalah:
Peringatan:
Untuk pekerjaan yang Anda lakukan Anda seharusnya tidak memiliki kasus aneh seperti poligon cekung. Saya tidak yakin apa yang akan terjadi dengan paha depan yang menutupi wilayah kutub, saya kira Anda harus memproyeksikannya ke dalam beberapa proyeksi kutub terlebih dahulu.
Tautan yang diposting pada langkah 1. mengarah ke kertas matematika-berat dan beberapa kode C ++ template-heavy. Tetapi seharusnya tidak terlalu sulit untuk mengetahui bagaimana kode bekerja karena itu hanya fungsi kecil di bagian atas file .
sumber