2009-05-15 14 views
6

iPhone'da aşağıdakileri nasıl uygulayacağım konusunda herhangi bir fikri olan var mı? ABD'nin bir haritasına sahibiz ve farklı renklerdeki (iklim bölgeleri, inanıyorum) farklı renklere sahip. Dikdörtgen değiller ve eyalet, posta veya ilçe veya diğer tanımlanmış satırları izlemiyorlar. Yani, bölgelerimiz çok yuvarlak ve hatta bitişik bile değil.iPhone, Harita, Tıklanabilir dikdörtgen olmayan alanlar

Kullanıcılarımıza kendi bölgelerini tıklayabilme şansı vermeyi çok isterdim ve hangi bölgeye dokunduğunu söyleyebildim, ama hayatım boyunca birçok çok sayıda dikdörtgenin yapılmasını sağladı. Eğrilere en iyi uyum, bunu nasıl yapacağımı anlayamıyorum.

Herhangi bir fikrin var mı?

DÜZENLEME: bölgeler

+2

Harita renk kodluysa, kullanıcılarınızın neden herhangi bir yeri tıklatıp seçtikleri piksele bakmalarına izin vermeyelim? –

+0

Uh. Uh. Kutsal saçmalık bu kadar parlak. Ben ona bakacağım. –

+0

Nikhil - 2 şeyler. Öncelikle, yorumunuzu bir cevap haline getirin ve kabul edeceğim. Ancak ikinci olarak, iPhone SDK'dan hangi renge değildiğine dair bir karar vermek için koddan haberiniz var mı? –

cevap

10

Nasıl link text Bu bölgeler tanımlanır ... gibi sert bu kadar olabilir? Nokta verileri alabilirsiniz, o zaman kullanarak CGPath oluşturun:

CGPathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path,null,xpoints[0],ypoints[0]) 
for (int i = 1; i < numpoints; ++i) { 
    CGPathAddLineToPoint(path,null,xpoints[i],ypoints[i]); 
} 
CGPathCloseSubpath(path); 

Sonra kullanıcı dokunuşlar, her bölge için, bu dokunma noktasını içerip içermediğini kontrol zaman:

if (CGPathContainsPoint(path,null,touchPoint,false)) ... 

Ve sakın Eğer bölgelerle bitince serbest bırakmak için unutmak: bir CGPathRef içinde birkaç ayrı alt yollarını oluşturabilir ve containmen için kontrol ettiğinizde tüm alt yolları kontrol edecek

CGPathRelease(path); 

Not t.

İsterseniz, çizgileri doğru almak için yayları veya eğrileri kullanmayı deneyebilirsiniz, ancak bu çok aşina olmadığım bir şeydir.

+0

Harika bir fikir. Onu çekebileceğime emin değilim (sorularımı örnek bir haritaya bağlamak için düzenledim). Bu tarz yolları ya da en azından bir yaklaşımı yapmak biraz zor olabilir. –

+0

Resme baktıktan sonra, sadece merak ediyorum, bu görüntü boyutuna göre ne kadar doğru? Yaklaşık 44x44 pikselden çok daha küçük bir alana sahip olmak istemiyorsunuz veya kullanıcı bunu tıklayamıyor. Ancak, Nikhil'in fikri çok kötü değildi; Tıkladıkları renge bir göz atın. Merak etme ... Gerçekten de, gösterdiğiniz başka bir veri olmadan, gösterdiğiniz sadece bir resim mi? –

+0

Ed: Dürüstçe, şu an planlama aşamasındayız, bu yüzden grafik sanatçısı ile çalışacağım. Gerçekte, büyük olasılıkla BÜYÜK bir haritayı bölümlere ayırırız ve yakınlaştırmaya izin verirler, böylece oldukça hassas bir şekilde tıklayabilirler. Yine de harika yorumlar. –

7

Vuruş testlerinizi yapmak için renk kodlu bir bitmap'e ihtiyacınız olabilir.

Görüntülenecek bir bitmapiniz olur, ancak tek renk kodlu bölgelere sahip başka bir bitmap olurdu. Kullanıcı ekran haritasını tıkladığında, hit test haritasındaki pikselin rengini kontrol edin ve ardından onaylama işlemini gerçekleştirin.

+3

+1 çok eski ve çok düzgün bir şapka hüneri için – slf

İlgili konular