Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

long tap detect i umieszczanie nowych lokacji na mapie


  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 izdum

izdum
  • 135 postów

Napisano 16 marca 2011 - 15:43

Mam problem z dodawaniem lokacji na mapie przez dotknieciem miejsca gdize powinna sie pojawic;/
Generalnie mam dodana opcje z wykrywaniem longPressa
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(hitTest:withEvent:)];

	[mapView addGestureRecognizer:longPress ];


i metode do przechwytywania zdarzenia:

- (void)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
	if(licz%2!=0){
        CLLocationCoordinate2D coord= [mapView convertPoint:point toCoordinateFromView:self.mapView];
		nowePunkty *newP=[[nowePunkty alloc]create:coord.latitude:coord.longitude:@"new":@"sadas"];
		[mapView addAnnotation:newP];
		NSLog(@"%f,%f",coord.latitude,coord.longitude);
		UIAlertView *alert = [[UIAlertView alloc]
							  initWithTitle:@"Dodano nowy punkt!"
							  message:nil
							  delegate:self
							  cancelButtonTitle:@"OK"
							  otherButtonTitles:nil, nil];
		[alert show];
	
		[alert release];
	
	}
	licz++;

}	


Jednak nslog wyswietla zupelnie inne wspolrzedne niz te ktore powinny byc w danym miejscu, ogolnie to punkt pojawia sie albo nie tam gdzie trzeba, albo wcale go nie ma;/
Dodatkowo mam jeszcze problem poniewaz przy dlugim tapnieciu metoda pojawiala sie 2 razy ( raz jak wcisnalem i 2gi raz jak puscilem ) czy da sie to jakos mniej łopatologicznie roziwazac niz uzywajac licznika, tak jak ja to zrobilem? I jak poprawic dodawanie nowych punktow?

#2 izdum

izdum
  • 135 postów

Napisano 18 marca 2011 - 16:05

ok do zamkniecia, udalo sie ogarnac;) -chyba ze ktos zainteresowany to pisac

#3 JKK

JKK
  • 411 postów
  • SkądOsolin

Napisano 18 marca 2011 - 18:41

No podziel się ;-)

#4 izdum

izdum
  • 135 postów

Napisano 06 kwietnia 2011 - 11:09

na poczatku do naszej mapy dodajemy obsluge longpressa:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGesture:)];
[mapView addGestureRecognizer:longPress ];
[longPress release];

a nastepnie metoda wylapujaca zdarzenie i dodajaca punkt:
-(void)handleLongPressGesture:(UIGestureRecognizer*)sender {
	
	
	if (sender.state == UIGestureRecognizerStateEnded)
		
	{

		nieskonczone=true;
		[self.mapView removeGestureRecognizer:sender];
	}
	
	else
		
	{
	
		CGPoint point = [sender locationInView:self.mapView];
		
		CLLocationCoordinate2D locCoord = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
	
		if(nieskonczone){
	
		nowoDodany=[[[nowePunkty alloc] create:locCoord.latitude:locCoord.longitude:@" ":@" "] autorelease];
	    [mapView addAnnotation:nowoDodany];
		nieskonczone=false;
		
		}
	}
}





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych