Menggambar radius sekitar titik di Google map

I'm menggunakan Google Maps API dan telah menambahkan penanda. Sekarang saya ingin menambahkan radius 10 mil di sekitar masing-masing penanda, yang berarti sebuah lingkaran yang berperilaku dengan tepat saat melakukan zoom. Saya tidak tahu bagaimana melakukan hal itu dan tampaknya itu's bukan sesuatu yang umum.

Saya menemukan salah satu contoh yang terlihat baik, dan anda dapat melihat di Google Latitude, terlalu. Di sana mereka menggunakan spidol dengan jari-jari, seperti yang saya ingin mereka.

Update: Google Latitude menggunakan gambar yang adalah skala, bagaimana itu bekerja?

Mengomentari pertanyaan (1)
Larutan

Menggunakan Google Maps API V3, membuat objek Lingkaran, kemudian gunakan bindTo() untuk mengikatnya ke posisi Penanda anda (karena mereka berdua google.maps.MVCObject contoh).

// Create marker 
var marker = new google.maps.Marker({
  map: map,
  position: new google.maps.LatLng(53, -2.5),
  title: 'Some location'
});

// Add circle overlay and bind to marker
var circle = new google.maps.Circle({
  map: map,
  radius: 16093,    // 10 miles in metres
  fillColor: '#AA0000'
});
circle.bindTo('center', marker, 'position');

Anda dapat membuatnya terlihat seperti Google Latitude lingkaran dengan mengubah fillColor, strokeColor, strokeWeight dll (full API).

Lihat lebih banyak source code dan contoh screenshot.

Komentar (1)

Tampaknya bahwa metode yang paling umum untuk mencapai ini adalah untuk menarik GPolygon dengan poin yang cukup untuk mensimulasikan sebuah lingkaran. Contoh anda direferensikan menggunakan metode ini. Halaman ini memiliki sebuah contoh yang baik - mencari fungsi drawCircle dalam kode sumber.

Komentar (1)

Di bulat bentuk geometri yang didefinisikan oleh titik, garis, dan sudut antara garis-garis. Anda hanya memiliki nilai-nilai dasar untuk bekerja dengan.

Oleh karena itu lingkaran (dalam hal bentuk yang diproyeksikan pada sebuah bidang) adalah sesuatu yang harus didekati dengan menggunakan poin. Semakin banyak poin, semakin'll terlihat seperti lingkaran.

Setelah mengatakan itu, menyadari bahwa google maps memproyeksikan bumi ke permukaan yang datar (kira "membuka gulungan" bumi dan peregangan+merata sampai terlihat "square"). Dan jika anda memiliki datar sistem koordinat anda dapat menggambar objek 2D pada semua yang anda inginkan.

Dengan kata lain anda bisa menggambar vektor skala lingkaran pada peta google. Yang menangkap adalah, google maps doesn't berikan untuk anda keluar dari kotak (mereka yang ingin tinggal dekat untuk GIS nilai-nilai seperti yang pragmatis mungkin). Mereka hanya memberikan anda GPolygon yang mereka ingin anda gunakan untuk mendekati lingkaran. Namun, orang ini melakukannya menggunakan vml untuk IE dan svg untuk browser lain (lihat "SKALA LINGKARAN" bagian).

Sekarang, kembali ke pertanyaan anda tentang Google Latitude menggunakan skala gambar lingkaran (dan ini mungkin yang paling berguna untuk anda): jika anda tahu jari-jari lingkaran anda tidak akan pernah berubah (misalnya it's selalu 10 mil di sekitar titik tertentu), maka solusi termudah adalah dengan menggunakan GGroundOverlay, yang hanya url gambar + yang GLatLngBounds gambar mewakili. Satu-satunya pekerjaan yang perlu anda lakukan kemudian adalah cacluate yang GLatLngBounds yang mewakili 10 mil. Setelah anda memiliki itu, google maps api menangani skala gambar anda sebagai pengguna zoom in dan out.

Komentar (1)

I've punya masalah ini di masa lalu, jadi saya bookmarked ini diskusi.

Untuk meringkas ini, anda dapat:

  1. Lihatlah ini circle filter's source code dan mencari tahu bagaimana untuk memasukkan ke dalam proyek anda.
  2. Menggambar GPolygon dengan poin yang cukup untuk mensimulasikan sebuah lingkaran.
  3. Menghasilkan file KML dengan memodifikasi http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&panjang=-105.1024 dan kemudian mengimpornya. Di Google Maps, anda bisa menempelkan URI di kotak pencarian dan akan menampilkan pada peta. I'm tidak yakin bagaimana anda bisa melakukannya dengan menggunakan API sekalipun.
Komentar (0)

Untuk API v3 solusi, merujuk ke:

http://blog.enbake.com/draw-circle-with-google-maps-api-v3

Ini menciptakan lingkaran di sekitar titik dan kemudian menunjukkan penanda dalam dan keluar dari jangkauan dengan warna yang berbeda. Mereka juga menghitung dinamis radius tapi dalam kasus anda radius adalah tetap jadi mungkin kurang bekerja.

Komentar (1)

Saya baru saja menulis sebuah artikel blog yang membahas hal ini, yang anda mungkin menemukan berguna: http://seewah.blogspot.com/2009/10/circle-overlay-on-google-map.html

Pada dasarnya, anda perlu membuat GGroundOverlay dengan benar GLatLngBounds. Sedikit rumit ini bekerja keluar sudut barat daya koordinat dan sudut timur laut koordinat ini imaginery square (GLatLngBounds) batas lingkaran ini, didasarkan pada radius yang diinginkan. Matematika yang cukup rumit, tapi anda hanya dapat merujuk ke getDestLatLng fungsi dalam blog. Sisanya harus cukup sederhana.

Komentar (0)