質問編集履歴

6

加筆訂正

2019/03/06 01:00

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -18,15 +18,13 @@
18
18
 
19
19
  *追記
20
20
 
21
- ・画面をタッチしている間、常に値の変更を監視したい。
22
-
23
- ・今回の場合、ストリートビューを1本または2本指でかしている間の値(heading)の変更を常に監視したい(指を離した後フェードで動きが止まるまで)。
21
+ ・今回の場合、ストリートビューている間の値(heading)の変更を常に監視したい(指を離した後フェードで動きが止まるまで)。
24
22
 
25
23
 
26
24
 
27
25
  headingを元にLabelに方角をリアルタイムで表示したいと考えています。
28
26
 
29
- なので``touchesbegan``ではうまくいきません。
27
+ ``touchesbegan``ではタッチ開始の1度しか値を取得できずうまくいきませんでした
30
28
 
31
29
 
32
30
 
@@ -134,7 +132,7 @@
134
132
 
135
133
 
136
134
 
137
- KVOを試してみました。
135
+ 教えていただいたKVOを試してみました。
138
136
 
139
137
  ``panoView.camera.orientation.addObserver(self, forKeyPath: "heading", options: [.old, .new], context: nil)``の``.orientation``で
140
138
 

5

質問を加筆訂正しました。

2019/03/06 01:00

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
@@ -1 +1 @@
1
- Maps SDK for iOSのPanoramaViewでheadingを"リアルタイム"取得するには?
1
+ Maps SDK for iOSのPanoramaViewでheadingをKVO監視するには? Value of type 'GMSOrientation' has no member...
test CHANGED
@@ -100,7 +100,9 @@
100
100
 
101
101
 
102
102
 
103
- self.addObserver(self, forKeyPath: "対象プロパティ", options: [.old, .new], context: nil)
103
+ self.addObserver(self, forKeyPath: "対象プロパティ", options: [.old, .new], context: nil) // <- ここを以下に訂正
104
+
105
+ panoView.camera.orientation.addObserver(self, forKeyPath: "heading", options: [.old, .new], context: nil) // <- ここでエラー
104
106
 
105
107
  }
106
108
 
@@ -122,13 +124,23 @@
122
124
 
123
125
  }
124
126
 
127
+
128
+
125
129
  ```
130
+
131
+
132
+
133
+ ##試したこと
134
+
135
+
126
136
 
127
137
  KVOを試してみました。
128
138
 
129
- 対象``heading````panoView``どちらもダメした。
139
+ ``panoView.camera.orientation.addObserver(self, forKeyPath: "heading", options: [.old, .new], context: nil)````.orientation``で
130
140
 
131
- ``heading = panoView.camera.orientation.heading``を書く場所を変えることで解決できそうな気もします。
141
+ エラー``Value of type 'GMSOrientation' has no member 'addObserver``が発生します。
142
+
143
+
132
144
 
133
145
  知識不足で申し訳ないのですがご教授いただけると幸いです。
134
146
 

4

加筆訂正

2019/03/05 16:53

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,11 @@
20
20
 
21
21
  ・画面をタッチしている間、常に値の変更を監視したい。
22
22
 
23
- ・今回の場合、ストリートビューを1本または2本指で動かしている間の値(heading)の変更を常に監視したい。headingの元に画面に方角リアルタイムで表示したいと考えてい
23
+ ・今回の場合、ストリートビューを1本または2本指で動かしている間の値(heading)の変更を常に監視したい(指した後フェードで動きが止るまで)
24
+
25
+
26
+
27
+ headingを元にLabelに方角をリアルタイムで表示したいと考えています。
24
28
 
25
29
  なので``touchesbegan``ではうまくいきません。
26
30
 
@@ -120,6 +124,10 @@
120
124
 
121
125
  ```
122
126
 
127
+ KVOを試してみました。
128
+
129
+ 対象``heading``、``panoView``どちらもダメでした。
130
+
123
131
  ``heading = panoView.camera.orientation.heading``を書く場所を変えることで解決できそうな気もします。
124
132
 
125
133
  知識不足で申し訳ないのですがご教授いただけると幸いです。

3

コードを追記しました。

2019/03/02 07:54

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,102 @@
32
32
 
33
33
 
34
34
 
35
+
36
+
37
+ ##コード
38
+
39
+ ```Swift
40
+
41
+ import UIKit
42
+
43
+ import GoogleMaps
44
+
45
+
46
+
47
+ class ViewController: UIViewController {
48
+
49
+
50
+
51
+ @IBOutlet weak var streetView: UIView!
52
+
53
+
54
+
55
+ @objc dynamic var panoView: GMSPanoramaView!
56
+
57
+ @objc dynamic var heading: CLLocationDirection = 0
58
+
59
+ let latitude: CLLocationDegrees = 36.5780574
60
+
61
+ let longitude: CLLocationDegrees = 136.6486596
62
+
63
+
64
+
65
+
66
+
67
+ override func viewDidLayoutSubviews() {
68
+
69
+ let width = <略>
70
+
71
+ let height = <略>
72
+
73
+ let frame = CGRect(x: 0, y: 0, width: width, height: height)
74
+
75
+
76
+
77
+ panoView = GMSPanoramaView(frame: frame)
78
+
79
+ panoView.camera = GMSPanoramaCamera(heading: heading, pitch: -10, zoom: 1)
80
+
81
+ panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: latitude, longitude: longitude))
82
+
83
+ streetView.addSubview(panoView)
84
+
85
+
86
+
87
+ heading = panoView.camera.orientation.heading
88
+
89
+ }
90
+
91
+
92
+
93
+ override func viewDidLoad() {
94
+
95
+ super.viewDidLoad()
96
+
97
+
98
+
99
+ self.addObserver(self, forKeyPath: "対象プロパティ", options: [.old, .new], context: nil)
100
+
101
+ }
102
+
103
+
104
+
105
+
106
+
107
+ override func observeValue(forKeyPath keyPath: String?, of object: Any?,
108
+
109
+ change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
110
+
111
+
112
+
113
+ print(change![.oldKey]!) // before
114
+
115
+ print(change![.newKey]!) // after
116
+
117
+ }
118
+
119
+ }
120
+
121
+ ```
122
+
123
+ ``heading = panoView.camera.orientation.heading``を書く場所を変えることで解決できそうな気もします。
124
+
125
+ 知識不足で申し訳ないのですがご教授いただけると幸いです。
126
+
127
+
128
+
129
+
130
+
35
- ###リンク
131
+ ##リンク
36
132
 
37
133
  [Maps SDK for iOS Reference](https://developers.google.com/maps/documentation/ios-sdk/reference/)

2

追記しました

2019/03/02 07:49

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,20 @@
14
14
 
15
15
 
16
16
 
17
+
18
+
19
+ *追記
20
+
21
+ ・画面をタッチしている間、常に値の変更を監視したい。
22
+
23
+ ・今回の場合、ストリートビューを1本または2本指で動かしている間の値(heading)の変更を常に監視したい。headingの元に画面に方角をリアルタイムで表示したいと考えています。
24
+
25
+ なので``touchesbegan``ではうまくいきません。
26
+
27
+
28
+
29
+
30
+
17
31
  よろしくお願いします。
18
32
 
19
33
 

1

加筆

2019/03/02 05:46

投稿

testyoutatsu
testyoutatsu

スコア29

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,16 @@
1
+ ##前提・実現したいこと
2
+
1
3
  [GoogleのMaps SDK for iOSを使って表示させたPanoramaView(ストリートビュー)の向いてる方角(heading)を取得したい)](https://teratail.com/questions/176090)
2
4
 
3
5
 
4
6
 
5
7
  以前こちらで質問したものです。
6
8
 
9
+ ``heading``を``panoView.camera.orientation.heading``で取得します。
7
10
 
8
11
 
12
+
9
- すでに表示さているPanoramaViewのheadingを"リアルタイム"で取得する方法をご教授ください。
13
+ れを"リアルタイム"で取得する方法をご教授ください。
10
14
 
11
15
 
12
16
 
@@ -16,4 +20,4 @@
16
20
 
17
21
  ###リンク
18
22
 
19
- [リファレンス](https://developers.google.com/maps/documentation/ios-sdk/reference/)
23
+ [Maps SDK for iOS Reference](https://developers.google.com/maps/documentation/ios-sdk/reference/)