Voorbeeldafbeelding van kaart bekijken

Hoe kan ik een voorbeeldpictogram maken zoals in de iPhone Map-applicatie?

Screenshot http://img835.imageshack.us/img835/1619/img0016x.png

Is hier een functie voor?

2
Wat bedoelt u? Afgeronde hoeken? Grens? Kaart en pin?
toegevoegd de auteur Eimantas, de bron
Bedankt voor uw hulp. Ik heb net ontdekt dat Apple code geeft in hun GeocoderDemo-voorbeeld van Apple op GeocoderDemo/PlacemarkViewController.m in de functie cellForMapView (MKMapView)
toegevoegd de auteur Thomas T, de bron

2 antwoord

Gebruik in iOS 7 MKMap Snapshotter. Van NSHipster :

MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.region = self.mapView.region;
options.size = self.mapView.frame.size;
options.scale = [[UIScreen mainScreen] scale];

NSURL *fileURL = [NSURL fileURLWithPath:@"path/to/snapshot.png"];

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    if (error) {
        NSLog(@"[Error] %@", error);
        return;
    }

    UIImage *image = snapshot.image;
    NSData *data = UIImagePNGRepresentation(image);
    [data writeToURL:fileURL atomically:YES];
}];

Vóór iOS7 een van de volgende dingen doen:

  • Voeg een livekaart toe en schakel interactie uit.
  • Gebruik de Google Static Maps API (hieronder uitgelegd).
  • Maak een MKMapView en render deze naar een afbeelding. Ik probeerde dit (zie vorige bewerking) maar kon de tegels niet laden. Ik heb geprobeerd te bellen naar behoeftelayout en andere methoden, maar werkte niet.

Apple's deal with Google is more reliable than a free API, but on the bright side, it is really simple. Documentation is at http://code.google.com/apis/maps/documentation/staticmaps/

This is the minimum amount of parameters for practical use: http://maps.googleapis.com/maps/api/staticmap?center=40.416878,-3.703530&zoom=15&size=290x179&sensor=false

Een samenvatting van de parameters:

  • center: this can be an address, or a latitude,longitude pair with up to 6 decimals (more than 6 are ignored).
  • format: png8 (default), png24, git, jpg, jpg-baseline.
  • language: Use any language. Default will be used if requested wasn't available.
  • maptype: One of the following: roadmap, satellite, hybrid, terrain.
  • scale: 1,2,4. Use 2 to return twice the amount of pixels on retina displays. 4 is restricted to premium customers. Non paid resolution limits are 640x640 for 1 and 2.
  • sensor: true or false. Mandatory. It indicates if the user is being located using a device.
  • size: size in pixels.
  • zoom: 0 (whole planet) to 21.

Er zijn er nog een paar om polygonen toe te voegen, aangepaste markeringen en de kaart te stylen.

  NSData* data = [NSData dataWithContentsOfURL:@"http://maps.googleap..."];
  UIImage *img = [UIImage imageWithData:data];
4
toegevoegd
Helaas toen ik mijn antwoord probeerde, kwam de kaart terug met lege tegels. Ik denk dat sommige fouten zouden lukken, maar nu volg ik het advies van Matt.
toegevoegd de auteur Jano, de bron
bedankt! Ik heb het in een extra weergave geplaatst (addSubview) en #import toegevoegd
toegevoegd de auteur Thomas T, de bron
ik gebruik nog steeds de code van het oude (onbewerkte) antwoord
toegevoegd de auteur Thomas T, de bron

U kunt de Statische API van Google Maps gebruiken om een ​​afbeelding te genereren in plaats van een volledige afbeelding te laden UIMapView .

2
toegevoegd