回答編集履歴

2

おまけ

2021/02/28 02:34

投稿

hoshi-takanori
hoshi-takanori

スコア7899

test CHANGED
@@ -39,3 +39,57 @@
39
39
  これで distance もたぶん正常な値が取れるようになるはず。
40
40
 
41
41
  (緯度は -90 〜 90 の範囲なので、135 度とかだと不正な値ってことで distance が 0 になるのでは…。)
42
+
43
+
44
+
45
+ ---
46
+
47
+
48
+
49
+ おまけ。余計なお世話かとは思いますが、データの持ち方は構造体の配列にするのが勧めです。
50
+
51
+
52
+
53
+ ```swift
54
+
55
+ struct Castle {
56
+
57
+ let name: String
58
+
59
+ let lat: Double
60
+
61
+ let lng: Double
62
+
63
+ }
64
+
65
+
66
+
67
+ let castles = [
68
+
69
+ Castle(name: "根室半島チャシ跡群", lat: 43.386969, lng: 145.7521176),
70
+
71
+ Castle(name: "五稜郭", lat: 41.7969948, lng: 140.7571649),
72
+
73
+ Castle(name: "松前城", lat: 41.4297918, lng: 140.1083792),
74
+
75
+ // 以下略
76
+
77
+ ```
78
+
79
+
80
+
81
+ ```swift
82
+
83
+ // 日本百名城の位置情報が入った辞書をもとにマップ上にピンを立てるメソッド
84
+
85
+ func makeCastlesPin(){
86
+
87
+ for castle in castles {
88
+
89
+ makeMapPoint(latitude: castle.lat, longitude: castle.lng, title: castle.name, subTitle: "")
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```

1

追記

2021/02/28 02:33

投稿

hoshi-takanori
hoshi-takanori

スコア7899

test CHANGED
@@ -9,3 +9,33 @@
9
9
 
10
10
 
11
11
  (または、calcDistance の引数を (緯度1, 緯度2, 経度1, 経度2) ではなく、CLLocation を 2 つにして、identifyNearCastle の引数も CLLocation にするともっと良いと思います。)
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
19
+ 修正内容をちゃんと書かなくて失礼しました。以下の 2 箇所です。
20
+
21
+
22
+
23
+ ```swift
24
+
25
+ func calcDistance(latitude1: Double, longitude1: Double, latitude2: Double, longitude2: Double) -> Double {
26
+
27
+ ```
28
+
29
+
30
+
31
+ ```swift
32
+
33
+ let distance = calcDistance(latitude1: tapPointLatitude, longitude1: tapPointLongitude, latitude2: targetCastleLat!, longitude2: targetCastleLng!)
34
+
35
+ ```
36
+
37
+
38
+
39
+ これで distance もたぶん正常な値が取れるようになるはず。
40
+
41
+ (緯度は -90 〜 90 の範囲なので、135 度とかだと不正な値ってことで distance が 0 になるのでは…。)