実現したいこと
・ユーザーが動画を投稿した場所を地図上でピン表示し、別のユーザーが地図上からそのピンを選択し、動画を見るアプリを作りたいです。
分からないこと
・ピンの打ち方(ユーザーが打つ)
・動画アップロードの方法
使用言語
Swift UI
X code 11
プログラミングの勉強を始めてまだ二週間です。Swiftの文法は理解できましたが、実際に機能を実装する手順についてほとんど知識がありません。
試したこと
・MKAnnotationが地図上への動画アップロードに関係があるかと思い、ドキュメントを参照しましたが、導入の仕方がわかりませんでした。
・ユーザーがピンを打つ際に、On Long Press Gestureを使用する場合の以下のコードを書いたがAbort trap6というエラーが出て解決できませんでした。
import Foundation
import MapKit
import SwiftUI
import UIKit
import CoreLocation
struct MapView: UIViewRepresentable {
func makeUIView(context: Context) -> MKMapView {
return MKMapView()
}
func updateUIView(_ uiView: MKMapView, context: Context) {
}
}
struct ContentView1: View {
var body: some View {
MapView()
.edgesIgnoringSafeArea(/@START_MENU_TOKEN@/.all/@END_MENU_TOKEN@/)
.onLongPressGesture {
class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate{
@IBOutlet weak var testMapView: MKMapView!
var myLocationManager: CLLocationManager!
var pinByLongPress: MKPointAnnotation!
override func viewDidLoad() {
super.viewDidLoad()
myLocationManager = CLLocationManager()
myLocationManager.requestWhenInUseAuthorization()
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error){
print("error")
}
@IBAction func longPressMap(_ sender: UILongPressGestureRecognizer) {
if(sender.state != UIGestureRecognizer.State.began){
return
}
pinByLongPress = MKPointAnnotation()
let location: CGPoint = sender.location(in: testMapView)
let longPressedCoordinate: CLLocationCoordinate2D = testMapView.convert(location, toCoordinateFrom: testMapView)
pinByLongPress.coordinate = longPressedCoordinate
testMapView.addAnnotation(pinByLongPress)
}
}
}}
}
struct ContentView1_Previews: PreviewProvider {
static var previews: some View {
ContentView1()
}
}
あなたの回答
tips
プレビュー