2014-06-09 17 views
23

Dobrze widzieć tag do szybkiego placu zabaw - uwielbiam to widzieć.Wyświetlanie mapy za pomocą narzędzia MapKit na placu zabaw Swift dla szybkiego podglądu?

Dotykałem Swift i zastanawiam się, czy MapKit może być używany na placu zabaw, dzięki czemu można korzystać z funkcji Quick Look, dzięki czemu mogę iterować i bawić się z podglądem mojej pracy. Nie wymyśliłem składni, więc pomyślałem, że zapytam, czy ktoś to zbadał w środowisku zabaw. Myślę, że potrzebuję jakiegoś kodu, aby ustalić go jako kontroler widoku.

import UIKit 
import MapKit 

// Sample UIView code which works great in the playground. 
//var myView:UIView = UIView(); 
//myView.frame = CGRectMake(0, 0, 320, 560) 
//myView.backgroundColor = UIColor.blueColor() 

// Non working map code - no errors but can't figure out what to call or initiate to get the view in the Quick Look side. 

var mapView = MKMapView(); 
mapView.region.center.latitude = mapView.userLocation.coordinate.latitude; 
mapView.region.center.longitude = mapView.userLocation.coordinate.longitude; 
mapView.region.span.latitudeDelta = 0.00725; 
mapView.region.span.longitudeDelta = 0.00725; 

odgadywanie jestem po prostu brakuje czegoś proste dla MapView init się itd. Uwielbiam interpretować plac zabaw dla majstrować dookoła, wystarczy, aby dowiedzieć się, czy można to zrobić funkcjonalność mao a nie tylko pisanie .swift pliki i środowisko w Xcode i coraz bardziej formalne.

+0

http://stackoverflow.com/questions/24108093/how-to-reference-swift-playground-itself?lq=1 sugeruje, że plac zabaw nie są interaktywne. –

+0

Może ten samouczek pomoże ci zrozumieć twój problem: http://www.appshocker.com/swift-programming-ios-101-part-4-mapkit-app-displaying-locations/ –

+0

faktycznie to pokazało błędy w konsoli błędów, gdy dodajesz linię tylko z mapView, ale nie mogę dla nich znaleźć rozwiązania Google. i próbowałem też XCPShowView ("Map", mapView) bez powodzenia – ReDetection

Odpowiedz

2

Spróbuj tego:

import UIKit 
import MapKit 
import XCPlayground // Required for XCPShowView 

let frame = CGRect(x: 0, y: 0, width: 150, height: 150) 
let mapView = MKMapView(frame: frame) 
mapView.region.center.latitude = 37.3347606 
mapView.region.center.longitude = -122.0548883 
mapView.region.span.latitudeDelta = 0.00725 
mapView.region.span.longitudeDelta = 0.00725 

XCPShowView("mapview", mapView) 
+0

ale kafelki mapy nigdy się nie wczytują – ReDetection

+0

Załadował mi mapę raz, ale teraz po odczekaniu przez chwilę otrzymuję 'GEOResourceManifestServerRemoteProxy: utracono połączenie z geod (Niepoprawne połączenie)' i 'Utracono połączenie zbyt wiele razy po kolei. Spróbuję ponownie za 30 sekund ... (Czy poprawna jest lista com.apple.geod.plist) '. To może być bug w Playground. – Mustafa

+0

W Xcode 6.2 po prostu zatrzymuje się mój plac zabaw, a czasami pojawia się komunikat o błędzie z informacją, że muszę zrestartować boisko, ponieważ Xcode utraciło połączenie. – holroy

7

Dla XCode7.1 i Swift2.1 na OS X, otworzyłem timeline i zrobił, co następuje:

import MapKit 
import XCPlayground 

let delta = 5.0 
let frame = CGRect(x:0, y:0, width:200, height:200) 
let mapView = MKMapView(frame: frame) 
var region = MKCoordinateRegion() 
region.center.latitude = 31.0 
region.center.longitude = -110.0 
region.span.latitudeDelta = delta 
region.span.longitudeDelta = delta 
mapView.setRegion(region, animated: true) 

XCPlaygroundPage.currentPage.liveView = mapView 
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true 
+0

Wydaje się, że * prawie * działa, dostaję mapę, siatkę i przybliża się do punktu, ale potem po prostu ładuje jasnobrązowy kwadrat (jakbym był na pustyni). Zmiana rodzaju mapy na Satelita lub Hybrydowa również niczego nie zmienia. – Nilloc

+1

@Nilloc Udało mi się uruchomić to, dodając linię 'XCPlaygroundPage.currentPage.needsIndefiniteExecution = true' po ustawieniu właściwości' liveView'. – Ziewvater

+0

@Ziewvater dzięki za edycję! Zastanawiam się, dlaczego trochę mi to poszło – cjohnson318

1

próbuję to w Swift Playground App Po prostu kilka modyfikacji i dodać jedną linię kodu. Moja szybka aplikacja do zabawy używa Swift 3.1. Chciałbym móc przesłać wideo, w tym widoku mapy mogę powiększać i pomniejszać i mogę poruszać się po mapie. https://i.stack.imgur.com/XVqPg.jpg

import UIKit 
import PlaygroundSupport 
import MapKit 


var myView:UIView = UIView() 
myView.frame = CGRect(origin: CGPoint(), size: CGSize(width: 320, height: 568)) 


var mapView = MKMapView(); 
mapView.region.center.latitude = 
mapView.userLocation.coordinate.latitude 
mapView.region.center.longitude = 
mapView.userLocation.coordinate.longitude 
mapView.region.span.latitudeDelta = 0.00725 
mapView.region.span.longitudeDelta = 0.00725 

myview.addSubview(mapView) 


PlaygroundPage.current.liveView = mapView 
PlaygroundPage.current.needsIndefiniteExecution = true