Отображение карты с помощью MapKit на игровой площадке Swift для быстрого просмотра?

Приятно видеть тег для быстрой игровой площадки — хотелось бы, чтобы это продолжалось.

Я возился со Swift, и мне интересно, можно ли использовать MapKit на игровой площадке, чтобы вы могли использовать функцию быстрого просмотра, чтобы я мог повторять и играть с предварительным просмотром моей работы. Я не разобрался с синтаксисом, поэтому решил спросить, исследовал ли кто-нибудь это в игровой среде. Я думаю, мне нужен код, чтобы установить его в качестве контроллера представления.

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;

Предполагаю, что мне просто не хватает чего-то простого, чтобы mapView мог инициировать себя и т. Д. Мне нравится интерпретируемая игровая площадка для возни, просто нужно выяснить, может ли она выполнять функции mao, а не просто писать файлы .swift и среду в Xcode и получать более формально.


person Kokanee    schedule 09.06.2014    source источник
comment
stackoverflow.com/questions/ 24108093/ предполагает, что игровая площадка не интерактивна.   -  person Maria Zverina    schedule 09.06.2014
comment
Возможно, это руководство поможет вам разобраться в вашей проблеме: appshocker.com/   -  person antonio-gomez    schedule 11.06.2014
comment
на самом деле он отображал ошибки в консоли ошибок при добавлении строки только с mapView, но я не могу найти решение для них. и я также пробовал XCPShowView(Map, mapView) без везения   -  person ReDetection    schedule 29.07.2014
comment
Вы когда-нибудь решали это?   -  person Jeef    schedule 19.11.2014


Ответы (3)


Для XCode7.1 и Swift2.1 в OS X я открыл временную шкалу и сделал следующее:

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

Обновление Xcode 9.x, Swift 4.1:

импорт PlaygroundSupport импорт MapKit

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 )

PlaygroundPage.current.liveView = mapView
PlaygroundPage.current.needsIndefiniteExecution = true
person cjohnson318    schedule 13.11.2015
comment
Кажется, это почти работает, я получаю карту, сетку, и она приближается к точке, но затем загружается коричневый квадрат (как будто я в пустыне). Изменение типа карты на Спутник или Гибрид тоже ничего не меняет. - person Nilloc; 17.11.2015
comment
@Nilloc Мне удалось заставить это работать, добавив строку XCPlaygroundPage.currentPage.needsIndefiniteExecution = true после установки свойства liveView. - person Ziewvater; 22.12.2015
comment
@Ziewvater спасибо за редактирование! Интересно, почему это сработало для меня некоторое время назад - person cjohnson318; 23.12.2015

Попробуй это:

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)
person Mustafa    schedule 12.02.2015
comment
но плитки карты никогда не загружаются - person ReDetection; 17.02.2015
comment
Однажды он загрузил карту для меня, но теперь, после некоторого ожидания, я получаю GEOResourceManifestServerRemoteProxy: Lost connection to geod (Connection invalid) и Lost connection too many times consecutively. Will try again in 30 seconds... (Is the com.apple.geod.plist correct?). Это возможно ошибка в Playground. - person Mustafa; 17.02.2015
comment
В Xcode 6.2 это просто останавливает мою игровую площадку, а иногда выдает сообщение об ошибке, в котором говорится, что мне нужно перезапустить игровую площадку, поскольку Xcode потерял соединение. - person holroy; 14.03.2015

Я пробую это в приложении Swift Playground, я всего лишь несколько модификаций и добавляю одну строку вашего кода. Мое приложение для быстрой игровой площадки использует Swift 3.1. Я хотел бы загрузить видео, в этом представлении карты я могу увеличивать и уменьшать масштаб, а также перемещаться по карте. 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
person Isau    schedule 23.06.2017