Suche senden
Hochladen
Map kit light
•
0 gefällt mir
•
2,153 views
CocoaHeads France
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 100
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
CocoaHeads France
Swift Sequences & Collections
Swift Sequences & Collections
CocoaHeads France
Introduction to reactive programming & ReactiveCocoa
Introduction to reactive programming & ReactiveCocoa
Florent Pillet
Realm.io par Clement Sauvage
Realm.io par Clement Sauvage
CocoaHeads France
Workshop 1: Good practices in JavaScript
Workshop 1: Good practices in JavaScript
Visual Engineering
Reactive, component 그리고 angular2
Reactive, component 그리고 angular2
Jeado Ko
ES6 PPT FOR 2016
ES6 PPT FOR 2016
Manoj Kumar
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
Visual Engineering
Empfohlen
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
CocoaHeads France
Swift Sequences & Collections
Swift Sequences & Collections
CocoaHeads France
Introduction to reactive programming & ReactiveCocoa
Introduction to reactive programming & ReactiveCocoa
Florent Pillet
Realm.io par Clement Sauvage
Realm.io par Clement Sauvage
CocoaHeads France
Workshop 1: Good practices in JavaScript
Workshop 1: Good practices in JavaScript
Visual Engineering
Reactive, component 그리고 angular2
Reactive, component 그리고 angular2
Jeado Ko
ES6 PPT FOR 2016
ES6 PPT FOR 2016
Manoj Kumar
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
Visual Engineering
Workshop 5: JavaScript testing
Workshop 5: JavaScript testing
Visual Engineering
Compose Async with RxJS
Compose Async with RxJS
Kyung Yeol Kim
Reactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwift
Florent Pillet
EcmaScript 6 - The future is here
EcmaScript 6 - The future is here
Sebastiano Armeli
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
ReactiveCocoa Goodness - Part I of II
ReactiveCocoa Goodness - Part I of II
manuelmaly
ES6: The Awesome Parts
ES6: The Awesome Parts
Domenic Denicola
Oop assignment 02
Oop assignment 02
MamoonKhan39
IoT Best practices
IoT Best practices
CocoaHeads France
ECMAScript 6
ECMAScript 6
Piotr Lewandowski
Callbacks and control flow in Node js
Callbacks and control flow in Node js
Thomas Roch
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.js
cacois
Object-Oriented Javascript
Object-Oriented Javascript
kvangork
Think Async: Asynchronous Patterns in NodeJS
Think Async: Asynchronous Patterns in NodeJS
Adam L Barrett
Node Boot Camp
Node Boot Camp
Troy Miles
ReactiveCocoa in Practice
ReactiveCocoa in Practice
Outware Mobile
New Design of OneRing
New Design of OneRing
Qiangning Hong
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.js
Piotr Pelczar
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
mattpodwysocki
Angular and The Case for RxJS
Angular and The Case for RxJS
Sandi Barr
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Geoffrey Goetz
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
John Wilker
Weitere ähnliche Inhalte
Was ist angesagt?
Workshop 5: JavaScript testing
Workshop 5: JavaScript testing
Visual Engineering
Compose Async with RxJS
Compose Async with RxJS
Kyung Yeol Kim
Reactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwift
Florent Pillet
EcmaScript 6 - The future is here
EcmaScript 6 - The future is here
Sebastiano Armeli
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
ReactiveCocoa Goodness - Part I of II
ReactiveCocoa Goodness - Part I of II
manuelmaly
ES6: The Awesome Parts
ES6: The Awesome Parts
Domenic Denicola
Oop assignment 02
Oop assignment 02
MamoonKhan39
IoT Best practices
IoT Best practices
CocoaHeads France
ECMAScript 6
ECMAScript 6
Piotr Lewandowski
Callbacks and control flow in Node js
Callbacks and control flow in Node js
Thomas Roch
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.js
cacois
Object-Oriented Javascript
Object-Oriented Javascript
kvangork
Think Async: Asynchronous Patterns in NodeJS
Think Async: Asynchronous Patterns in NodeJS
Adam L Barrett
Node Boot Camp
Node Boot Camp
Troy Miles
ReactiveCocoa in Practice
ReactiveCocoa in Practice
Outware Mobile
New Design of OneRing
New Design of OneRing
Qiangning Hong
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.js
Piotr Pelczar
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
mattpodwysocki
Angular and The Case for RxJS
Angular and The Case for RxJS
Sandi Barr
Was ist angesagt?
(20)
Workshop 5: JavaScript testing
Workshop 5: JavaScript testing
Compose Async with RxJS
Compose Async with RxJS
Reactive Programming Patterns with RxSwift
Reactive Programming Patterns with RxSwift
EcmaScript 6 - The future is here
EcmaScript 6 - The future is here
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
ReactiveCocoa Goodness - Part I of II
ReactiveCocoa Goodness - Part I of II
ES6: The Awesome Parts
ES6: The Awesome Parts
Oop assignment 02
Oop assignment 02
IoT Best practices
IoT Best practices
ECMAScript 6
ECMAScript 6
Callbacks and control flow in Node js
Callbacks and control flow in Node js
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.js
Object-Oriented Javascript
Object-Oriented Javascript
Think Async: Asynchronous Patterns in NodeJS
Think Async: Asynchronous Patterns in NodeJS
Node Boot Camp
Node Boot Camp
ReactiveCocoa in Practice
ReactiveCocoa in Practice
New Design of OneRing
New Design of OneRing
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.js
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
Angular and The Case for RxJS
Angular and The Case for RxJS
Andere mochten auch
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Geoffrey Goetz
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
John Wilker
Introduction to MapKit
Introduction to MapKit
Rob C
The 5 Core Components of Effective Digital Marketing...
The 5 Core Components of Effective Digital Marketing...
Paul Battrick
5 Realms for Learning iOS Development
5 Realms for Learning iOS Development
irving-ios-jumpstart
Glympse Map Kit
Glympse Map Kit
Egor Pushkin
Core Location and Map Kit: Bringing Your Own Maps [Voices That Matter: iPhone...
Core Location and Map Kit: Bringing Your Own Maps [Voices That Matter: iPhone...
Chris Adamson
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
Juliana Chahoud
Andere mochten auch
(8)
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Keeping Track of Moving Things: MapKit and CoreLocation in Depth
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
Introduction to MapKit
Introduction to MapKit
The 5 Core Components of Effective Digital Marketing...
The 5 Core Components of Effective Digital Marketing...
5 Realms for Learning iOS Development
5 Realms for Learning iOS Development
Glympse Map Kit
Glympse Map Kit
Core Location and Map Kit: Bringing Your Own Maps [Voices That Matter: iPhone...
Core Location and Map Kit: Bringing Your Own Maps [Voices That Matter: iPhone...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
MapKit na prática: Desenvolvendo um aplicativo iOS que exibe Pontos de Intere...
Ähnlich wie Map kit light
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Xamarin
Agile Iphone Development
Agile Iphone Development
Giordano Scalzo
Iphone course 2
Iphone course 2
Janet Huang
Your Second iPhone App - Code Listings
Your Second iPhone App - Code Listings
Vu Tran Lam
連邦の白いヤツ 「Objective-C」
連邦の白いヤツ 「Objective-C」
matuura_core
in this assignment you are asked to write a simple driver program an.pdf
in this assignment you are asked to write a simple driver program an.pdf
michardsonkhaicarr37
Tricks to Making a Realtime SurfaceView Actually Perform in Realtime - Maarte...
Tricks to Making a Realtime SurfaceView Actually Perform in Realtime - Maarte...
DroidConTLV
Day 1
Day 1
Pat Zearfoss
React native tour
React native tour
Magdiel Duarte
Object-Oriented JavaScript
Object-Oriented JavaScript
kvangork
groovy databases
groovy databases
Paul King
Fact, Fiction, and FP
Fact, Fiction, and FP
Brian Lonsdorf
Java and xml
Java and xml
info_zybotech
iOS
iOS
Scott Leberknight
Vavr Java User Group Rheinland
Vavr Java User Group Rheinland
David Schmitz
Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)
Jorge Maroto
Mashup caravan android-talks
Mashup caravan android-talks
honjo2
Functions
Functions
Luther Quinn
You will learn RxJS in 2017
You will learn RxJS in 2017
名辰 洪
Mobile Web 5.0
Mobile Web 5.0
Michael Galpin
Ähnlich wie Map kit light
(20)
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Agile Iphone Development
Agile Iphone Development
Iphone course 2
Iphone course 2
Your Second iPhone App - Code Listings
Your Second iPhone App - Code Listings
連邦の白いヤツ 「Objective-C」
連邦の白いヤツ 「Objective-C」
in this assignment you are asked to write a simple driver program an.pdf
in this assignment you are asked to write a simple driver program an.pdf
Tricks to Making a Realtime SurfaceView Actually Perform in Realtime - Maarte...
Tricks to Making a Realtime SurfaceView Actually Perform in Realtime - Maarte...
Day 1
Day 1
React native tour
React native tour
Object-Oriented JavaScript
Object-Oriented JavaScript
groovy databases
groovy databases
Fact, Fiction, and FP
Fact, Fiction, and FP
Java and xml
Java and xml
iOS
iOS
Vavr Java User Group Rheinland
Vavr Java User Group Rheinland
Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)
Mashup caravan android-talks
Mashup caravan android-talks
Functions
Functions
You will learn RxJS in 2017
You will learn RxJS in 2017
Mobile Web 5.0
Mobile Web 5.0
Mehr von CocoaHeads France
Mutation testing for a safer Future
Mutation testing for a safer Future
CocoaHeads France
iOS App Group for Debugging
iOS App Group for Debugging
CocoaHeads France
Asynchronous swift
Asynchronous swift
CocoaHeads France
Visual accessibility in iOS11
Visual accessibility in iOS11
CocoaHeads France
My script - One year of CocoaHeads
My script - One year of CocoaHeads
CocoaHeads France
Ui testing dealing with push notifications
Ui testing dealing with push notifications
CocoaHeads France
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
CocoaHeads France
L'intégration continue avec Bitrise
L'intégration continue avec Bitrise
CocoaHeads France
Super combinators
Super combinators
CocoaHeads France
Design like a developer
Design like a developer
CocoaHeads France
Handle the error
Handle the error
CocoaHeads France
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
CocoaHeads France
SwiftyGPIO
SwiftyGPIO
CocoaHeads France
Présentation de HomeKit
Présentation de HomeKit
CocoaHeads France
Programme MFI retour d'expérience
Programme MFI retour d'expérience
CocoaHeads France
How to communicate with Smart things?
How to communicate with Smart things?
CocoaHeads France
Build a lego app with CocoaPods
Build a lego app with CocoaPods
CocoaHeads France
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
CocoaHeads France
Project Entourage
Project Entourage
CocoaHeads France
What's new in iOS9
What's new in iOS9
CocoaHeads France
Mehr von CocoaHeads France
(20)
Mutation testing for a safer Future
Mutation testing for a safer Future
iOS App Group for Debugging
iOS App Group for Debugging
Asynchronous swift
Asynchronous swift
Visual accessibility in iOS11
Visual accessibility in iOS11
My script - One year of CocoaHeads
My script - One year of CocoaHeads
Ui testing dealing with push notifications
Ui testing dealing with push notifications
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
L'intégration continue avec Bitrise
L'intégration continue avec Bitrise
Super combinators
Super combinators
Design like a developer
Design like a developer
Handle the error
Handle the error
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
SwiftyGPIO
SwiftyGPIO
Présentation de HomeKit
Présentation de HomeKit
Programme MFI retour d'expérience
Programme MFI retour d'expérience
How to communicate with Smart things?
How to communicate with Smart things?
Build a lego app with CocoaPods
Build a lego app with CocoaPods
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
Project Entourage
Project Entourage
What's new in iOS9
What's new in iOS9
Kürzlich hochgeladen
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
2toLead Limited
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Scott Keck-Warren
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Alan Dix
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
OnBoard
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Sujit Pal
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
Ridwan Fadjar
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
ThousandEyes
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
shyamraj55
Kürzlich hochgeladen
(20)
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Map kit light
1.
MapKit Carnet de route
2.
François Pignon Comptable au
Ministère des Finances
3.
Jeudi Confession Mode
Thèmes iDVD activé
4.
Infinite Loop -
Cupertino
5.
Yerba Buena Garden
- San Francisco
6.
Le Sequoia C’est
quoi ?
7.
Hauteur : 115,61 m
Périmètre(1) : 47 m Poids : 2 100 t (1) Mesuré à 1,2 m du sol.
8.
9.
10.
11.
12.
4 033
13.
14.
?
15.
MapKit Framework
16.
Afficher une carte
17.
18.
19.
20.
www.psdgraphics.com
21.
MapKit Framework
22.
MapKit Framework
23.
+
MapKit.framework + CoreLocation.framework
24.
25.
Types de carte
26.
MKMapTypeStandard
MKMapTypeSatellite MKMapTypeHybrid
27.
MKMapTypeStandard
3 MKMapTypeSatellite MKMapTypeHybrid
28.
29.
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface
STSViewController : UIViewController @end
30.
#import "STSViewController.h" @interface STSViewController
() { IBOutlet MKMapView *_mapView; } @end @implementation STSViewController - (void)viewDidLoad { [super viewDidLoad]; [_mapView setMapType:3]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } @end
31.
32.
Simulateur
33.
Appareil
34.
Simulateur #if TARGET_IPHONE_SIMULATOR
[_mapView setMapType:MKMapTypeHybrid]; #else [_mapView setMapType:3]; #endif Appareil
35.
Se souvenir de
la dernière position
36.
@property (nonatomic) MKCoordinateRegion
region; - (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated; @property (nonatomic) MKMapRect visibleMapRect; - (void)setVisibleMapRect:(MKMapRect)mapRect animated:(BOOL)animate; @protocol MKMapViewDelegate <NSObject> @optional - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated: (BOOL)animated;
37.
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface
STSViewController : UIViewController <MKMapViewDelegate> @end
38.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {…} #pragma mark
- - (void)delayedSaveVisibleMapRect { MKMapRect tVisibleMapRect=_mapView.visibleMapRect; NSString *tString=[NSString stringWithFormat:@"%g|%g|%g|%g",tVisibleMapRect.origin.x, tVisibleMapRect.origin.y, tVisibleMapRect.size.width, tVisibleMapRect.size.height]; [[NSUserDefaults standardUserDefaults] setObject:tString forKey:STSLastVisibleMapRect]; } #pragma mark - MKMapView delegate - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayedSaveVisibleMapRect) object:nil]; [self performSelector:@selector(delayedSaveVisibleMapRect) withObject:nil afterDelay:1.0]; } @end
39.
Indiquer un emplacement
40.
Annotation
41.
42.
<MKAnnotation> MKPointAnnotation - le
mal aimé
43.
#import <MapKit/MapKit.h> #import "STSSharedConstants.h" @interface
STSTreeAnnotation : NSObject <MKAnnotation> @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @property (nonatomic, readonly) STSTreeKind treeKind; @property (nonatomic, readonly,getter=isTreeLogged) BOOL logged; + (id)treeAnnotationWithCoordinate:(CLLocationCoordinate2D)inCoordinate treeKind: (STSTreeKind)inKind logged:(BOOL)inLogged; - (id)initWithCoordinate:(CLLocationCoordinate2D)inCoordinate treeKind:(STSTreeKind)inKind logged:(BOOL)inLogged; @end
44.
#import "STSTreeAnnotation.h" @interface STSTreeAnnotation
() { ! CLLocationCoordinate2D _coordinate; ! STSTreeKind _treeKind; ! BOOL _logged; } @end @implementation STSTreeAnnotation @synthesize coordinate=_coordinate,treeKind=_treeKind,logged=_logged; + (id) treeAnnotationWithCoordinate:(CLLocationCoordinate2D)inCoordinate treeKind: (STSTreeKind)inKind logged:(BOOL)inLogged { ! return [[[STSTreeAnnotation alloc] initWithCoordinate:inCoordinate treeKind:inKind logged:inLogged] autorelease]; } - (id) initWithCoordinate:(CLLocationCoordinate2D)inCoordinate treeKind:(STSTreeKind)inKind logged:(BOOL)inLogged { ! self=[super init]; ! ! if (self!=nil) { ! ! _coordinate=inCoordinate; ! ! _treeKind=inKind; ! ! _logged=inLogged;
45.
#import "STSViewController.h" #import "STSTreeAnnotation.h" #import
<CoreLocation/CoreLocation.h> @interface STSViewController () { IBOutlet MKMapView *_mapView; } - (void)delayedSaveVisibleMapRect; @end NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; @implementation STSViewController - (void)viewDidLoad { [super viewDidLoad]; /* Set Map Type to Terrain */ [_mapView setMapType:3]; /* Restore (approximately) the visible map rect */ NSString *tString=[[NSUserDefaults standardUserDefaults]
46.
47.
MKAnnotationView MKPinAnnotationView
48.
MKPinAnnotationColorRed
MKPinAnnotationColorGreen MKPinAnnotationColorPurple
49.
MKPinAnnotationColorRed MKPinAnnotationColorPurple
50.
#import "STSViewController.h" #import "STSTreeAnnotation.h" #import
<CoreLocation/CoreLocation.h> @interface STSViewController () { IBOutlet MKMapView *_mapView; } - (void)delayedSaveVisibleMapRect; @end NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; NSString * const STSTreeAnnotationIdentifier=@"STSTreeAnnotationIdentifier"; @implementation STSViewController - (void)viewDidLoad {…} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {…} #pragma mark - - (void)delayedSaveVisibleMapRect
51.
52.
53.
Sequoia Sempervirens
Metasequoia Sequoiadendron Giganteum Abattu
54.
Sequoia Sempervirens
Metasequoia Sequoiadendron Giganteum Abattu
55.
CoreImage
56.
#import <MapKit/MapKit.h> #import "STSSharedConstants.h" #import
"STSTreeAnnotation.h" @interface STSPinAnnotationView : MKPinAnnotationView - (id)initWithAnnotation:(STSTreeAnnotation *) inTreeAnnotation reuseIdentifier:(NSString *)reuseIdentifier; @end
57.
- (id)initWithAnnotation:(STSTreeAnnotation *)inTreeAnnotation
reuseIdentifier:(NSString *)reuseIdentifier { self=[super initWithAnnotation:inTreeAnnotation reuseIdentifier:reuseIdentifier]; if (self!=nil) { if ([inTreeAnnotation isTreeLogged]==YES) { self.pinColor=MKPinAnnotationColorRed; } else { switch([inTreeAnnotation treeKind]) { case STSTreeKindSequoiadendronGiganteum: self.pinColor=MKPinAnnotationColorGreen; break; case STSTreeKindSequoiaSempervirens: self.pinColor=MKPinAnnotationColorPurple; break; case STSTreeKindMetasequoia: self.pinColor=MKPinAnnotationColorGreen; break; } } [super setImage:[self image]]; } return self; }
58.
#import "STSViewController.h" #import "STSTreeAnnotation.h" #import
"STSPinAnnotationView.h" #import <CoreLocation/CoreLocation.h> @interface STSViewController () { IBOutlet MKMapView *_mapView; } - (void)delayedSaveVisibleMapRect; @end NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; NSString * const STSTreeAnnotationSequoiadendronIdentifier=@"TreeAnnotationSequoiadendronIdentifier"; NSString * const STSTreeAnnotationSempervirensIdentifier=@"TreeAnnotationSempervirensIdentifier"; NSString * const STSTreeAnnotationMetasequoiaIdentifier=@"TreeAnnotationMetasequoiaIdentifier"; @implementation STSViewController - (void)viewDidLoad {…} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
59.
60.
WTF?!#
61.
62.
} + (UIImage *)imageForTreeKind:(STSTreeKind)treeKind
logged:(BOOL)logged { UIImage *tImage=nil; if (logged==YES) { tImage=[UIImage imageNamed:@"loggedPin"]; } else { MKPinAnnotationColorRed switch(treeKind) { case STSTreeKindSequoiadendronGiganteum: tImage=[UIImage imageNamed:@"sequoiadendronPin"]; break; case STSTreeKindSequoiaSempervirens: tImage=[UIImage imageNamed:@"sempervirensPin"]; break; MKPinAnnotationColorPurple case STSTreeKindMetasequoia: tImage=[UIImage imageNamed:@"metasequoiaPin"]; break; } } return tImage; } #pragma mark - - (id)initWithAnnotation:(STSTreeAnnotation *)annotation reuseIdentifier:(NSString *)reuseIdentifier {
63.
#import "STSViewController.h" #import "STSTreeAnnotation.h" #import
"STSTreeAnnotationView.h" #import <CoreLocation/CoreLocation.h> @interface STSViewController () { MKPinAnnotationColorRed IBOutlet MKMapView *_mapView; } - (void)delayedSaveVisibleMapRect; @end MKPinAnnotationColorPurple NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; NSString * const STSTreeAnnotationViewIdentifier=@"TreeAnnotationViewIdentifier"; @implementation STSViewController - (void)viewDidLoad {…} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {…} #pragma mark -
64.
65.
66.
Délimiter une région
67.
68.
69.
Overlays
70.
MKCircle
MKPolyline MKPolygon MKCircleView MKPolylineView MKPolygonView
71.
Données Géographiques
72.
www.gitesdegaule.fr/KaraMeLise/
73.
74.
<?xml version="1.0" encoding="UTF-8"?> <kml
xmlns="http://earth.google.com/kml/2.2"> <Document> <name><![CDATA[Val-d'Oise (95)]]></name> <Style id="gitesdegaule.fr"> <LineStyle> <color>cc2d3939</color> <width>3</width> </LineStyle> <PolyStyle> <color>804d4def</color> </PolyStyle> </Style> <Placemark id="val-doise"> <name><![CDATA[Val-d'Oise (95)]]></name> <styleUrl>#gitesdegaule.fr</styleUrl> <Polygon> <outerBoundaryIs> <LinearRing> <tessellate>1</tessellate> <coordinates> 2.20056187,48.90881128,250 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Document> </kml>
75.
2.20056187,48.90881128
76.
77.
> awk 'NR%2==0'
input output
78.
#import <MapKit/MapKit.h> @interface STSPolygonWrapper
: NSObject <MKOverlay> @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @property (nonatomic, readonly) MKMapRect boundingMapRect; @property (nonatomic, retain) MKPolygon *polygon; + (STSPolygonWrapper *)polygonWrapperWithContentsOfURL:(NSURL *)inURL; - (id)initWithContentsOfURL:(NSURL *)inURL; - (BOOL)intersectsMapRect:(MKMapRect)inMapRect; @end
79.
#import "STSPolygonWrapper.h" @interface STSPolygonWrapper
() { ! MKPolygon * _polygon; } @end @implementation STSPolygonWrapper @synthesize polygon=_polygon; + (STSPolygonWrapper *)polygonWrapperWithContentsOfURL:(NSURL *)inURL { ! STSPolygonWrapper *tPolygonWrapper=nil; ! ! if (inURL!=nil) tPolygonWrapper=[[STSPolygonWrapper alloc] initWithContentsOfURL:inURL]; ! ! return [tPolygonWrapper autorelease]; } - (id)initWithContentsOfURL:(NSURL *)inURL { ! self=[super init]; ! ! if (self!=nil) { ! ! NSString *tRawCoordinates; ! !
80.
#import "STSViewController.h" #import "STSTreeAnnotation.h" #import
"STSTreeAnnotationView.h" #import "STSPolygonWrapper.h" #import <CoreLocation/CoreLocation.h> @interface STSViewController () {…} - (void)delayedSaveVisibleMapRect; @end NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; NSString * const STSTreeAnnotationViewIdentifier=@"TreeAnnotationViewIdentifier"; @implementation STSViewController - (void)viewDidLoad { [super viewDidLoad]; /* Set Map Type to Terrain */ [_mapView setMapType:3]; /* Restore (approximately) the visible map rect */
81.
82.
83.
84.
Naviguer
85.
86.
87.
Tap & Gestures
88.
UIView ≠ UIView
89.
#import <MapKit/MapKit.h> #define STSMAPVIEW_TRACKING_MODE_NORMAL!
0 #define STSMAPVIEW_TRACKING_MODE_SPECIAL! 1 @interface STSMapView : MKMapView { ! NSInteger _trackingMode; ! NSArray *_cachedOriginalRecognizers; } @property (nonatomic) NSInteger trackingMode; @end @protocol STSMapViewDelegate <MKMapViewDelegate> - (void) mapView:(STSMapView *)inMapView handleZoomInRequestAtPoint:(CGPoint)inPoint; - (void) mapView:(STSMapView *)inMapView handleZoomOutRequestAtPoint:(CGPoint)inPoint; @end
90.
#import "STSMapView.h" @implementation STSMapView @synthesize
trackingMode=_trackingMode; - (void) dealloc { ! [_cachedOriginalRecognizers release]; ! ! [super dealloc]; } #pragma mark - - (void) setTrackingMode:(NSInteger)inMode { ! if (_trackingMode!=inMode) { ! ! if (inMode==STSMAPVIEW_TRACKING_MODE_NORMAL) { ! ! ! self.zoomEnabled=YES; self.scrollEnabled=YES; if (_cachedOriginalRecognizers!=nil) { ! ! ! ! self.gestureRecognizers=_cachedOriginalRecognizers; ! ! ! ! ! ! ! ! [_cachedOriginalRecognizers release]; ! ! ! ! ! ! ! ! _cachedOriginalRecognizers=nil; ! ! ! } ! ! } ! ! else {
91.
#import <MapKit/MapKit.h> @interface STSPolygonWrapper
: NSObject <MKOverlay> @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; @property (nonatomic, readonly) MKMapRect boundingMapRect; @property (nonatomic) BOOL contours; @property (nonatomic, retain) MKPolygon * polygon; @property (nonatomic, retain) NSString * label; + (STSPolygonWrapper *)polygonWrapperWithContentsOfURL:(NSURL *)inURL label:(NSString *)inLabel; - (id)initWithContentsOfURL:(NSURL *) inURL label:(NSString *)inLabel; - (BOOL)containsPoint:(CLLocationCoordinate2D)inCoordinate; - (BOOL)intersectsMapRect:(MKMapRect)inMapRect; @end
92.
#import "STSPolygonWrapper.h" @interface STSPolygonWrapper
() { ! MKPolygon * _polygon; ! CGMutablePathRef _pathRef; ! BOOL _contours; NSString * _label; } @end @implementation STSPolygonWrapper @synthesize polygon=_polygon,contours=_contours,label=_label; + (STSPolygonWrapper *)polygonWrapperWithContentsOfURL:(NSURL *)inURL label:(NSString *)inLabel { ! STSPolygonWrapper * tPolygonWrapper=nil; ! ! if (inURL!=nil) tPolygonWrapper=[[STSPolygonWrapper alloc] initWithContentsOfURL:inURL label:inLabel]; ! ! return [tPolygonWrapper autorelease]; } - (id)initWithContentsOfURL:(NSURL *)inURL label:(NSString *)inLabel { ! self=[super init];
93.
#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import
"STSMapView.h" @interface STSViewController : UIViewController <STSMapViewDelegate> @end
94.
#import "STSViewController.h" #import "STSPolygonWrapper.h" #import
<CoreLocation/CoreLocation.h> @interface STSViewController () { IBOutlet STSMapView *_mapView; NSMutableArray *_overlays; STSPolygonWrapper *_overlay; } - (void)delayedSaveVisibleMapRect; @end NSString * const STSLastVisibleMapRect=@"LastVisibleMapRect"; @implementation STSViewController - (void)viewDidLoad { [super viewDidLoad]; /* Set Map Type to Terrain */ [_mapView setMapType:3];
95.
Cluster
96.
applidium.com/en/news/too_many_pins_on_your_map/
97.
Références WWDC sessions 2009 :
Session 118 - Embedding Maps in iPhone Applications 2010 : Session 127 - Customizing Maps with Overlays 2011 : Session 111 - Visualizing Information Geographically with Map Kit 2012 : Session 300 - Getting Around With Map Kit KML Régions : www.gitesdegaule.fr/KaraMeLise/ Déparetements : git.piprime.fr Git - php/pi-google-maps-api.git/ tree - pi-google-maps-api/res/france/regions/
98.
Références Sample Code
s.sudre.free.fr/Stuff/CocoaHeads/STSimplified-CocoaHeads.zip
99.
www.sequoias.eu
100.
QA &
Jetzt herunterladen