iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   MapKit: Bioscopen in de buurt (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/92973-mapkit-bioscopen-de-buurt.html)

Jeroen0704 10-06-11 12:19

MapKit: Bioscopen in de buurt
 
Hee.

Ik wil graag in mijn app bioscopen in de buurt laten zien. Als je op de Maps app die standaard op je iPhone zit, bioscoop invoert laat deze ook de bioscopen in de buurt zien. Ik wil dit dus ook, maar dan met een mapView in mijn eigen app.

Het lukt me wel om de huidige locatie te krijgen of op een bepaalde plek een AnnotationView neer te zetten, maar het lukt me niet om de bioscopen in de buurt te laten zien. Weet iemand hoe ik dit kan doen, of kan iemand mij hier mee helpen?

Groeten Jeroen

TUX2K 10-06-11 13:50

Je zal opzoek moeten gaan naar een api (webservice of eigenlijst) met de bioscopen. De google maps app gebruikt de database van Google om POI (point of interest) te vinden.

Het is mogelijk om zelf deze api aan te roepen, maar hier zijn wel voorwaarden aan verbonden. Deze mogelijkheid zit niet in de MKMapKit.
Je zult dus zelf moet gaan bouwen.

Jeroen0704 10-06-11 14:08

Bedankt voor de tip!
Ik heb deze API gevonden en hij werkt goed.

Nikooos 10-06-11 15:44

Maar dan heb je toch nog steeds een lijst met locaties van bioscopen nodig?

Jeroen0704 10-06-11 15:52

De API ui mijn vorige post geeft inderdaad alleen de pinnen op het scherm weer. Het volgende is om informatie zoals het telefoonnummer buiten de kaart weer te geven als je op een van de pinnen drukt.

TUX2K 10-06-11 16:24

In de google local search zitten die dus niet, dus je zult op zoek moeten gaan naar een andere api.
Tevens mag je google local search, zover ik weet, niet gebruiken in een app. Hij is bedoelt voor op een website.

Jeroen0704 10-06-11 16:25

Goed dat je het zegt, ik zal het eens uit gaan zoeken.

TUX2K 10-06-11 16:48

Die van Yahoo heeft wel een telefoon nummer: Local Search Web Services - YDN

Je mag 5,000 queries per dag per ip doen, gebruiken is enkel for niet comerciele doel einde.

Jeroen0704 14-06-11 15:47

Het is me nu gelukt om informatie zoals het telefoonnummer van een bioscoop te krijgen, maar alleen op een bepaalde index. Ik haal de informatie op als je een pin selecteert met de volgende code:

Code:

- (void) mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annView
{
    NSLog(@"Select");
   
    int index = 1;
    NSString *title = [[theArray objectAtIndex:index] title];
    NSArray *fullAdress = [[theArray objectAtIndex:index] fullAddressArray];
    NSString *postcode = [fullAdress objectAtIndex:index];
    NSString *adress = [[theArray objectAtIndex:index] streetAddress];
    NSString *tel = [[theArray objectAtIndex:index] phoneNumber];
    NSString *city = [[theArray objectAtIndex:index] city];
   
    NSLog(@"%@", title);
    NSLog(@"%@", postcode);
    NSLog(@"%@", adress);
    NSLog(@"%@", tel);
    NSLog(@"%@", city);
}

De NSMutableArray "theArray" bevat de MKAnnotations. Mijn vraag is nu hoe ik kan achterhalen welke pin uit die array is geselecteerd, zodat ik de informatie van die pin kan ophalen.

TUX2K 14-06-11 16:02

MKAnnotationView heeft een MKAnnotations als propety.

Loading…

DJ14 14-06-11 19:29

Je hebt een array met MKAnnotations. Deze MKAnnotations hebben eenieder eigen eigenschappen, zoals je in je stukje code laat zien (title, streedAddress,phoneNumber, etc.). De pin draagt dus zijn eigen informatie als het goed is. Das mooi en handig. In de didSelectAnnotationView kan je dan die data gewoon weer ophalen op de volgende manier (maak dus gebruik van de variabele annView in de delegate methode didSelectAnnotationView):

Code:

- (void) mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annView
{


Test *vIDV = [[Test alloc] init]; // neem aan dat dit een nieuwe tableviewcontroller is die de data van de betreffende annotation zal weergeven aan de gebruiker
PlaceMark *customAnno = (PlaceMark *)annView.annotation; //PlaceMark is de naam van de custom class voor de MKAnnotation
        DetailView2 *dV = [[DetailView2 alloc] initWithRootViewController:vIDV]; //nieuwe navigationcontroller
        vIDV.title = customAnno.title;
        vIDV.streetAddress = customAnno.streetAddress;
        vIDV.phoneNumber = customAnno.phoneNumber;
// etc.
        dV.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        [self presentModalViewController:dV animated:YES];
        [vIDV release];
        [dV release];
        [customAnno autorelease];
}


Jeroen0704 16-06-11 12:02

Bedankt allemaal, het werkt nu:d


Alle tijden zijn GMT +2. Het is nu 16:56.