2011-04-15 13 views
12

Yardım gerekli şimdi. MKPolyline ve MKPolylineView ile çizgiler çizebilirim, ancak MKMapView'daki iki koordinat arasında bir yay veya eğri çizgileri nasıl çizilir? Harika teşekkürler. Final SolutionMKMapView'da MKOverlayView ile ark/eğri çizgisi nasıl çizilir

Sonunda bunu isteyen yardımcı olmak için burada kendimi bu sonuçlara yazdı.

Eğer isterseniz:

  • sadece harita
  • bir resim çizmek harita üzerinde bindirme olarak yay yolu ve görüntü
  • Yani birleştirmek

    1. sadece harita üzerinde ark yol çizmek çözümler şunlardır:

      1. MKPolyline ve MKPolylineView, MKCircle ve MKCircleView daireler çizmek için,MKPolygon ve MKPolygonView çokgen çizmek için çizgiler çizmek için vardır. Kimse uymuyor mu? Bir yay nerede? Oh evet. Şimdi gerçekten çözüm: MKOverlayPathViewtüretilen özel bir sınıf oluşturmak ve geçersiz -createPath yöntemi, bir yay sizin gibi CGContextAddArcToPoint veya başkalarının işlevlerini kullanın oluşturmak -createPath yılında ve sadece seni yolunu ilişkilendirmek MKOverlayPathView yol özelliğine oluşturmak ve özel işler yapılır. Sonra haritaya MKPolyline eklersiniz (Evet! Sadece MKPolyline!), Daha sonra -mapView: viewForOverlay: yöntemini kullanarak özel sınıf oluşturun bu polyline. O zaman koş, her şey istediğin gibi çalışır. Sihirli? Bir yay olarak bir MKPolyline çizebilirsiniz!
      2. Sadece bir resim? MKAnnotationView'u kullanın. Bitti! bunu yapabilirsin! Buna inanıyorum!
      3. Sorunumda, bindirme içinde bir görüntü içeren bir yay çizmek istiyorum. Bu yüzden, özel bir sınıf oluşturmak için MKOverlay protokolüne ve bu kaplamayı çizmek için MKOverlayView türetilmiş özel bir sınıf oluşturuyorum. Her şey yolunda gidiyor ama harita üzerinde herhangi bir yol çizemiyorum! LineWidth'ı 1,2,3,4'e ayarlıyorum ... ama işe yaramadı! Ah .. çözüm hattı genişliği MKRoadWidthAtZoomScale (zoomScale) işlevi ile ayarlanır ve yolu görebilirsiniz! Yani ......

      bitti Ve burada bazı ipuçları:

      1. Kullanım Çekirdek Grafik yolları değil, MapKit koordinatları ne de UIView koordinatları çizmek için!Sadece akılda çizgi genişliğini tutmak CG işlevlerinde
      2. bu işlev tarafından dönüştürülmesi gerekir: Belgelerin okunması
    +0

    Merhaba, haritanızda sadece ark yolu çizmeye yönelik çözümünüzü deniyorum, ancak bazı sorunlar yaşıyorum ... Bana biraz kod gösterebilir misiniz? Çünkü bunu gerçekten uygulamamda yapmam gerekiyor. Şimdiye kadar herhangi bir çalışma bulmak ... Şimdiden teşekkürler! Ben – Ben

    +0

    Merhaba, @Ben. Ve haritanızda ne çizmek istersin? – Shiny

    +0

    Teşekkürler! Bölüm 1'de ne demek istediniz: "Sonra -mapView: viewForOverlay: yönteminde özel sınıf oluşturduğunuzda bu çoklu çizgiyi al." Yapmalı mıyım: [[ÖZEL-SINIF tahsisatı] initWithOverlay: THE-MKPOLYLINE-OVERLAY] – spiralstairs

    cevap

    1

    yardım etmek MKRoadWidthAtZoomScale (zoomScale)

  • Hope, bir yaratabilir görünüyor MKOverlayPathView örneği ve path özelliğine rasgele bir CGPathRef nesnesi atayın. Bu yol hem düz çizgiler hem de yaylar içerebilir.

    Yolun koordinatlarının (MKMapPoint veya CLLocationCoordinate2D akla) hangi formatta olması gerektiğini bilmiyorum (ve belgelere değinmiyor), ancak bunu biraz deneyerek bulabilirsiniz.

  • +0

    Teşekkürler Ole Begemann. – Shiny

    +0

    Koordinatları görünümle ilgili noktalara dönüştürmeniz gerekiyor, MapView'ın bir yöntemi convetCoordinatestoPoints ve tersine, CGPathRef'in oluşturulmasına yardımcı olabilir – iDroid

    1

    Kendinizi zaten kendi yorumunuzda yanıtladınız, ancak herkese, bir koordinat kümesi üzerinden bir yay yolu çizmek için sample code'u içeren GitHub'daki mükemmel AIMapViewWrapper projesine işaret etmek istiyorum. Bu projede, altında bir gölge yolu (ve bu yol boyunca bir düzlemi hareket ettirmek gibi diğer şeyler) dahil bir düzlemin aldığı yolu çizmek için kullanılır. Bunu bıçaklayan herkes için kullanışlı olmalı.