Birden çok coğrafi konumdan Çokgen Geofence nasıl oluşturulur (uzun, enlem değerleri). Ayrıca, kullanıcının nasıl izleyeceği bu coğrafi bölgeye giriyor veya bu bölgeden android üzerinden çıkıyor.Android Geofencing (Çokgen)
8
A
cevap
12
Coğrafi bir nokta, bir çokgen oluşturan basitçe lat/long noktalarıdır. Lat/long noktaları listeniz olduğunda, bir yerin çokgenin içinde olup olmadığını görmek için bir nokta-içi-çokgen kontrolünü kullanabilirsiniz.
public class PolygonTest
{
class LatLng
{
double Latitude;
double Longitude;
LatLng(double lat, double lon)
{
Latitude = lat;
Longitude = lon;
}
}
bool PointIsInRegion(double x, double y, LatLng[] thePath)
{
int crossings = 0;
LatLng point = new LatLng (x, y);
int count = thePath.length;
// for each edge
for (var i=0; i < count; i++)
{
var a = thePath [i];
var j = i + 1;
if (j >= count)
{
j = 0;
}
var b = thePath [j];
if (RayCrossesSegment(point, a, b))
{
crossings++;
}
}
// odd number of crossings?
return (crossings % 2 == 1);
}
bool RayCrossesSegment(LatLng point, LatLng a, LatLng b)
{
var px = point.Longitude;
var py = point.Latitude;
var ax = a.Longitude;
var ay = a.Latitude;
var bx = b.Longitude;
var by = b.Latitude;
if (ay > by)
{
ax = b.Longitude;
ay = b.Latitude;
bx = a.Longitude;
by = a.Latitude;
}
// alter longitude to cater for 180 degree crossings
if (px < 0) { px += 360; };
if (ax < 0) { ax += 360; };
if (bx < 0) { bx += 360; };
if (py == ay || py == by) py += 0.00000001;
if ((py > by || py < ay) || (px > Math.max(ax, bx))) return false;
if (px < Math.min(ax, bx)) return true;
var red = (ax != bx) ? ((by - ay)/(bx - ax)) : float.MAX_VALUE;
var blue = (ax != px) ? ((py - ay)/(px - ax)) : float.MAX_VALUE;
return (blue >= red);
}
}
program akışı açısından, bir arka plan isteyeceksiniz:
Bu
Ben çok büyük içbükey çokgen için nokta, poligon içinde denetimleri gerçekleştirmek için kendi projelerinde kullanmış kodu (20K + köşe) 'dir Konum güncellemelerini yapmak için servis yapın ve sonra konumun içeride olup olmadığını görmek için bu denetimi lat/long polygon verilerinizde yapın.İlgili konular
- 1. Android geofencing API BroadcastReceiver tetiklenmedi
- 2. Çokgen alanını hesapla
- 3. Çokgen için yolu dönüştürme
- 4. libGDX çokgen - daire çarpışması
- 5. Çokgen komutuyla saydamlık
- 6. Garip hata: Çokgen oluşturulamıyor
- 7. İçerisinde Latlng aranıyor Çokgen hassas değil
- 8. Kendiliğinden kesişen çokgen bölme, Python
- 9. QGraphicsPolygonAçık (kapalı değil) çokgen çizimi
- 10. Özel düğmeyle çokgen çizimini başlat
- 11. R (uzaysal veri) Çokgen Haritaları
- 12. Tüm diğer çokgen köşelere çokgen üzerinde bir köşe için "Görüş Hattı"
- 13. Nokta Çokgen algoritmasında yanlış sonuçlar veriyor Bazen
- 14. PostgreSQL'te alanları kullanarak çokgen nasıl oluşturabilirim?
- 15. Metin dosyasından çağrılan çokgen boyutunu nasıl değiştirebilirim?
- 16. Google Haritalar'a Çokgen Ekleme ve Kaldırma v3?
- 17. Matplotlib'de özel bir kapakla çokgen doldurma?
- 18. Çokgen Kesişim başarısız, "büyüklük" çarpışması çok büyük
- 19. Sipariş CONCAVE çokgen köşelerini saat yönünde (sayaç)?
- 20. Çokgen blob (çift görüntü) merkez çizgisi
- 21. RGeo Öngörülen Tampon Çokgen çok küçük
- 22. En yakın ilişkili çokgen için bilgileri R?
- 23. C Düzensiz Çokgen Alanının Hesaplanması C#
- 24. D3: Coğrafi çokgen alanını d3 içinde bulma
- 25. HTML5 kanvas, görüntü çokgende/çokgen olabilir mi?
- 26. Çokgen çizimi tamamlandığında, google maps api v3
- 27. Java - Çokgen ve Çizgi'nin kesişme noktası
- 28. Verilen tüm noktalardan geçen içbükey çokgen oluştur
- 29. R broşür: shapefile'dan çokgen eklenerek fayans kaldırılıyor
- 30. Yaprakçık l.draw.polyline ile çizilmiş Çokgen boyutunu denetleme
Geofence ayrıca içbükey Hull olabilir. Bir geofence PHP sınıfı yazdım. – Bytemain
Ah, yanlış yazdım değil mi? Bunu vurguladığın için teşekkürler. – matthewrdev
Bu, saf altın IMHO. Pratik sınırlamalar, eksiklikler veya yanlışlıklar var mı? Ayrıca, bu algoritmanın bir adı var mı? – LucasM