2011-03-11 19 views
5

Basit bir çizgi çizen özel bir MKOverlayView'ım var. drawMapRect:'da CGContextSetLineWidth(context, 30); ayarını yapıyorum. Tamamen yakınlaştırıldığında iyi görünüyor, ancak siz uzaklaştırdığınızda, çizgi daha da azalır. MKOverlayView referansı, haritanın yakınlaştırma seviyesine otomatik olarak ölçeklendiğini söylüyor. Yakınlaştırma seviyem ne olursa olsun, aynı genişlikte çizmek için nasıl zorlayabilirim? MKPolylineView (ve MKPolygonView) 'un bunu doğru bir şekilde yaptıklarını fark ettim ... aynı genişliğe sahip olacak şekilde ayarlamak için zum yaptığınızda, çizginin genişliğini yeniden boyutlandırabilirsiniz. Bunu overlayView'ımda nasıl yapabilirim?Özel MKOverlayView satır genişliği

cevap

14

Hangi sonucu istediğiniz belli değil. Çizgi genişliğinin yakınlaştırmadan bağımsız olarak aynı kalmasını mı istiyorsunuz yoksa hattın, harita görünümünün, yakınlaştırma seviyesinden bağımsız olarak çizdiği yollar ile aynı olmasını mı istiyorsunuz?

CGContextSetLineWidth(context, (30/zoomScale)); 

yollar gibi hattını oluşturmak aynı genişliğe tutmak için kullanmak MKRoadWidthAtZoomScale: çizgisini tutmak için

, zoomScale bölerek deneyin ne olursa olsun biraz sabit genişliği

CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale)); 

Yapabilirsin Ayrıca isterseniz yol genişliğine ek bir ölçekleme uygulayın:

CGContextSetLineWidth(context, 1.5*MKRoadWidthAtZoomScale(zoomScale)); 
+1

ne olursa olsun. Ben sadece zoomScale tarafından bölen, bunu yaptığını tahmin edemezdim! Genişlik ve zoomScale'in ters orantılı olması gerektiğini biliyordum; ama bunun doğrusal olacağını düşünmemiştim. – GendoIkari

İlgili konular