Nido Apple

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Hola buenas tardes, soy nuevo en desarrollo de aplicaciones en xcode 4, tengo que crear un mapa que contenga diferentes iconos en los pines o chinchetas dependiendo el lugar de hubicacion por ejemplo si es un restaurante que me muestre una imagen de un tenedor pero si es un bar que me muestre una imagen de una copita espero que alguien me ayude no se por donde empezar he echo ejemplos en los que he modificado la imagen de pin pero no se como insertar otro pin con una imagen distinta

15 Respuestas

0voto

Peter Puntos289470
Bienvenido al sitio Gonzalo. ¿Y no tienes nada de la aplicación? La estructura base. El numero de views. Como mostrar la información de cada local. Las views para cada cosa. Etc... ¿En si lo que quieres es un ejemplo? Porque si mencionas que ya tienes el código y ahí puedes modificar las cosas, en ese mismo código vienen ya puntos integrados y es cosa de que agregues los tuyos por medio de coordenadas o como este hecho tu ejemplo o vaya a ser tu aplicación. Comenta que tienes hecho y veo que ejemplos te puedo dar. Un favor, no abras dos temas sobre la misma cosa, así solo se complica la ayuda y se dividen las soluciones. Saludos.

0voto

gonzalo sanchez Puntos3060
Primeramente una disculpa por los temas creados, mi archivo BrewMapViewController.h con el sigiente código: #import #import @interface BrewMapViewController : UIViewController { IBOutletMKMapView *map; NSArray *breweries; } @end y BrewMapViewController.m con el codigo: #import "BrewMapViewController.h" #import "MyAnnotation.h" @implementation BrewMapViewController - (void)viewDidLoad { [superviewDidLoad]; breweries = [[NSArrayalloc] initWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"Breweries" ofType:@"plist"]]; double minLat = [[breweriesvalueForKeyPath:@"@min.latitude"] doubleValue]; double maxLat = [[breweriesvalueForKeyPath:@"@max.latitude"] doubleValue]; double minLon = [[breweriesvalueForKeyPath:@"@min.longitude"] doubleValue]; double maxLon = [[breweriesvalueForKeyPath:@"@max.longitude"] doubleValue]; MKCoordinateRegion region; region.center.latitude = (maxLat + minLat) / 2.0; region.center.longitude = (maxLon + minLon) / 2.0; region.span.latitudeDelta = (maxLat - minLat) * 1.05; region.span.longitudeDelta = (maxLon - minLon) * 1.05; map.region = region; for (NSDictionary *breweryDict in breweries){ MyAnnotation *annotation = [[MyAnnotation alloc] initWithDictionary:breweryDict]; [map addAnnotation:annotation]; [annotation release]; } } //En esta parte del codigo cambio el icono del pin o chincheta - (MKAnnotationView *)mapViewMKMapView *)mapView viewForAnnotationid )annotation{ if (map.userLocation == annotation){ returnnil; } NSString *identifier = @"MY_IDENTIFIER"; MKAnnotationView *annotationView = [mapdequeueReusableAnnotationViewWithIdentifier:identifier]; if (annotationView == nil){ annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease]; annotationView.image = [UIImage imageNamed:@"restaurant.png"]; annotationView.canShowCallout = YES; annotationView.rightCalloutAccessoryView = [UIButtonbuttonWithType:UIButtonTypeDetailDisclosure]; } return annotationView; } - (void)mapViewMKMapView *)mapView annotationViewMKAnnotationView *)view calloutAccessoryControlTappedUIControl *)control { NSLog(@"I've been tapped"); } - (BOOL)shouldAutorotateToInterfaceOrientationUIInterfaceOrientation)interfaceOrientation { returnYES; } - (void)dealloc { [breweriesrelease]; [maprelease]; [super dealloc]; } [USER=3706]endy[/USER] Si me cambia el icono del pin o chincheta pero lo que quiero eso me coloque un pin distinto dependiendo del establecimiento o lugar que esta en mapa por ejempplo si es un restarante que me coloque el icono restaurant.png pero si es un bar que coloque bar&antro.png

0voto

gonzalo sanchez Puntos3060
encontre este fragmento de codigo en donde utilizan un switch para solucionar este problema pero no le entiendo: - (MKAnnotationView *)mapViewMKMapView *)theMapView viewForAnnotationid )annotation { if ([annotation isKindOfClass:[MapPin class]]) { MKPinAnnotationView* customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier"MapPin"] autorelease]; MapPin * nota=annotation; int idPin=[nota getIdPin]; punto * pinPunto= [puntos objectAtIndex: idPin]; //Asignar imagen al pin UIImage *flagImage; switch (pinPunto.modo) { case 4: flagImage = [UIImage imageNamed"ico_map_1.png"]; break; case 5: flagImage = [UIImage imageNamed"ico_map_2.png"]; break; case 6: flagImage = [UIImage imageNamed"ico_map_3.png"]; break; case 8: flagImage = [UIImage imageNamed"ico_map_4.png"]; break; case 10: flagImage = [UIImage imageNamed"ico_map_5.png"]; break; default: flagImage = [UIImage imageNamed"ico_map_6.png"]; break; } customPinView.image = flagImage; customPinView.opaque = NO; } customPinView.animatesDrop = NO; customPinView.canShowCallout = YES; return customPinView; } No como tendria que ir el codigo dentro de MapPin para poderlo usar en este codigo espero tu le entiendas y alla auna solución

0voto

Peter Puntos289470
Vamos por partes, porque si discutimos 10 codigos diferentes, no se va a entender nada. ¿Como tienes el archivo .plist en tu primer código? ¿Ya agregaste o modificaste ahí los pins?

0voto

gonzalo sanchez Puntos3060
No en el arvhivo .plist solo tengo los datos generales del lugar como su nombre, direccion, latitud y longitud, el problema es que no se como crear diferentes pines y que a cada pin le pueda cambiar la imagen, te dejo una impresion del archivo .plist Estos datos solo los utilizo para crear los diferentes lugares, esto lo ace pero me pone la misma imagen en todos los lugares como se muestra en la imagen: lo que quiero y no tengo la menor idea es de como asignarle a cada pin una imagen distinta tengo los iconos pero no se como asignarselas: espero me entiendas no se como crear pines y que cada pin sea independiente, que si le cambio el de la imgen a uno, no se cambien en los demas solo en el que estoy cambiando...

0voto

Peter Puntos289470
En ese .plist tienes que crear otro exactamente igual y con los mismos datos. Solo le pones la información nueva y ya. Agregas un Item 5 que sea diccionario, dos strings y dos números con su información correspondiente y ya, con eso te aparecen los que vayas agregando.

0voto

gonzalo sanchez Puntos3060
Si entiendo eso, pero no es lo que quiero, lo que espero o intento hacer esque cada pin tenga una imagen diferente dependiendo el lugar ya sea restaurare, bar, pastelería, cafe etc... no tienes algun código que que muestre cada pin o chincheta con una imagen distinta dentro del mapa?? estoy deseperado por favor

0voto

Peter Puntos289470
Ok, podrías agregar otro string en el plist para el icono. En donde tienes name, adress, latitude, agrega otro que sea icon y en el string solo tienes que poner elnombredelaimagen.png. Para los restaurantes el tenedor, para bares una copa, etc... Así puedes llamar todo desde el mismo plist. Tendrías que agregar icono como propiedad y después hacer el @synthesize en el archivo m. @property (nonatomic, copy) NSString *icono;

0voto

gonzalo sanchez Puntos3060
Bien, he creado el item icono para cada lugar en mi archivo .plist como se muestra en la imagen y en la en archivo .h agregue la propiedad icono y coloque el @synthesize en el archivo .m cual seria el paso siguiente???

0voto

Peter Puntos289470
Me parece que así no vas a poder hacer nada. No puedes solo poner pedazos de código en los archivos a ver que pasa. Todo tiene una estructura y una lógica para que funcione y creo que no haz revisado nada de lo básico en cuanto a el desarrollo de aplicaciones y como funciona en si Xcode y el Objective-C. Si me equivoco, me lo dices. El problema es que cada proyecto depende de todos sus archivos y código que estés utilizando, entonces digamos que si no tienes una estructura definida y necesites en si algo exacto, es muy difícil darte un código que complete todo tu aplicación y ya funcione. ¿Me explico? Si pones el código de todos los archivos de tu app (utilizando el botón de código para que sea legible), te ayudo a desarrollarla tal cual la necesites. Mira este tutorial sobre MapKit, ahí puedes conocer todo el proceso y como funciona en sí. Ahí vienen todos los pasos de como se hace un mapa con los pina que tu quieras y puedes descargar el código del proyecto en Xcode para que pruebes con el. Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...