2012-04-07 12 views
5

Bir kullanıcının konumunu gerçek zamanlı olarak izleyen, MKMapView numaralı telefondan derslerini çizen bir iOS 5 uygulaması yazıyorum. Bir GPS okuması alındığında, güncel ve eski konumlar arasında bir çizgilerin çekilmesini isterim, sonuçta kullanıcının gittiği yerde bir parça (veya ekmek kırıntısı) oluşturur.MKPolylines'in uzatılması veya çoklu MKPolylines'in oluşturulması?

aşağıda benzer bir kod kullanarak, ben önceden tüm CLLocationCoordinate2D koordinatları sahip olduğunu varsayarak, bir parça çizmek için MKPolyline ve MKPolylineView kullanarak rahatım: Sadece CLLocationCoordinate2D alıyorum beri,

MKPolyline *route = [MKPolyline polylineWithCoordinates:coordinates count:[self.coordinateArray count]];   
[mapView addOverlay:route]; 

Ancak Gerçek zamanlı koordinatlar (locationManager:didUpdateToLocation:fromLocation: delege yöntemi denir) Yeni polyline çizmenin en iyi yolundan emin değilim.

Varolan satırları genişletebilir miyim (örneğin C-tabanlı coordinates dizisine ekleme - çok C deneyimine sahip olmadığımdan emin değilim) ya da sonraki iki koordinat arasında yeni bir çizgi çizmek gerekir Harita üzerinde çok fazla bireysel çizgiye sahip olmanın performans ve bellek kullanımını etkileyebileceğini duydum ...)?

Şimdiden teşekkürler.

+1

Apple örnek uygulamasını [Breadcrumb] gördünüz mü (http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html)? – Anna

cevap

5

Birincisi, Breadcrumb örnek kod özellikle linki how to update MKPolyline/MKPolylineView? görüyoruz. İhtiyacınız olan şey için iyi bir başlangıç ​​noktası olabilir. Ancak, CrumbPath nesnesinin hayati bir parçasının, realloc numaralı aramaya yapılan bir çağrı olduğunu göreceksiniz. Evet, puan dizilerinizi verimli bir şekilde saklamak istiyorsanız C-stili dizileri nasıl yöneteceğinizi bilmeniz gerekir. Evet, bu kolay değil. Evet, C stili dizi manipülasyonu, bellek sızıntıları için bir davettir.

İçerik haritası numunesi dizi yeniden boyutlandırmak için realloc kullanır. Dizinin NSMutableData türüyle kullandığı belleği ayırarak biraz daha güvenli olabilirsiniz. Is it ok to use “classic” malloc()/free() in Objective-C/iPhone apps?'a bir yanıt olarak önerilmektedir. Aynı işi yapan normal C malloc() ve free() işlevlerini görmek için diğer çözümleri okuyun. NSMutableData'nın çok kullanışlı bir increaseLengthBy: yöntemine sahip olduğunu unutmayın.

her C öğrenci yanlış sizeof() kullanmaya çalıştığında anlamak

- ve düzgün nasıl kullanılacağını - C bellek yönetimini anlayacaktır.

+0

Cevabınız için teşekkür ederiz (ve bana Breadcrumb örnek koduna dikkat edin!). – Skoota

+1

Breadcrumb örnek linki bozuk. Yeni bağlantıyı buldum: http://developer.apple.com/library/ios/#samplecode/Breadcrumb/Introduction/Intro.html –

İlgili konular