Google haritasında bir noktanın etrafına yarıçap çizme

Google Haritalar API'sini kullanıyorum ve işaretleyiciler ekledim. Şimdi her işaretçinin etrafına 10 millik bir yarıçap eklemek istiyorum, yani yakınlaştırma sırasında uygun şekilde davranan bir daire. Bunu nasıl yapacağım hakkında hiçbir fikrim yok ve görünüşe göre bu yaygın bir şey değil.

İyi görünen bir örnek buldum ve Google Latitude'a da bakabilirsiniz. Orada tam da benim istediğim gibi yarıçaplı işaretleyiciler kullanıyorlar.

Güncelleme: Google Latitude ölçeklendirilmiş bir resim kullanıyor, bu nasıl çalışır?

Görünüşe göre bunu başarmanın en yaygın yöntemi, bir daireyi simüle etmek için yeterli noktaya sahip bir GPolygon çizmektir. Başvurduğunuz örnek bu yöntemi kullanmaktadır. Bu sayfada iyi bir örnek var - kaynak kodda drawCircle fonksiyonunu arayın.

Yorumlar (1)

Küresel geometride şekiller noktalar, çizgiler ve bu çizgiler arasındaki açılarla tanımlanır. Çalışmak için yalnızca bu temel değerlere sahipsiniz.

Bu nedenle bir daire (bir küre üzerine yansıtılan bir şekil açısından) noktalar kullanılarak yaklaştırılması gereken bir şeydir. Ne kadar çok nokta olursa, o kadar çok daire gibi görünecektir.

Bunu söyledikten sonra, google maps'in dünyayı düz bir yüzeye yansıttığını fark edin (dünyayı "unrolling" düşünün ve "square" görünene kadar gerin + düzleştirin). Ve eğer düz bir koordinat sisteminiz varsa, üzerine istediğiniz kadar 2B nesne çizebilirsiniz.

Başka bir deyişle, bir google haritası üzerinde ölçeklendirilmiş bir vektör daire çizebilirsiniz. Sorun şu ki, google maps bunu size kutudan çıktığı gibi vermiyor (pragmatik olarak mümkün olduğunca CBS değerlerine yakın kalmak istiyorlar). Size yalnızca bir daireye yaklaşmak için kullanmanızı istedikleri GPolygon'u veriyorlar. Ancak, bu adam bunu yaptı IE için vml ve diğer tarayıcılar için svg kullanarak ("SCALED CIRCLES" bölümüne bakın).

Şimdi, ölçeklendirilmiş bir daire resmi kullanarak Google Latitude hakkındaki sorunuza geri dönersek (ve bu muhtemelen sizin için en yararlı olanıdır): dairenizin yarıçapının asla değişmeyeceğini biliyorsanız (örneğin, bir nokta etrafında her zaman 10 mil), o zaman en kolay çözüm bir GGroundOverlay kullanmak olacaktır, bu sadece bir resim url'si + resmin temsil ettiği GLatLngBounds'dur. O zaman yapmanız gereken tek iş, 10 mil yarıçapınızı temsil eden GLatLngBounds'ü cacluate etmektir. Bunu yaptıktan sonra, google maps api kullanıcı yakınlaştırma ve uzaklaştırma yaptıkça resminizi ölçeklendirir.

Yorumlar (1)

Geçmişte bu sorunu yaşamıştım, bu yüzden bu tartışmayı yer imlerine ekledim.

Özetlemek gerekirse, yapabilirsiniz:

  1. Bu circle filter'ın kaynak koduna bir göz atın ve projenize nasıl dahil edeceğinizi bulun.
  2. Bir daireyi simüle etmek için yeterli noktaya sahip bir GPolygon çizin.
  3. http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024][3] adresini değiştirerek ve ardından içe aktararak bir KML dosyası oluşturun. Google Haritalar'da, URI'yi arama kutusuna yapıştırabilirsiniz ve haritada görüntülenecektir. API kullanarak bunu nasıl yapabileceğinizden emin değilim.
Yorumlar (0)