質問編集履歴

3

1行目の分からなかったlongitudeToPixelSpaceX関数がわかりました。

2017/06/20 02:49

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
@@ -91,3 +91,45 @@
91
91
  ```
92
92
 
93
93
  誠に申し訳ありませんが、宜しくお願い致します。
94
+
95
+
96
+
97
+ 一番初めに書いてあったobjective-cのソースのサイトに参考にしたというサイトが書いてあったため、調べて見たら、longitudeToPixelSpaceXが分かりました。
98
+
99
+ ```swift3
100
+
101
+ func MERCATOR_RADIUS() -> Double {
102
+
103
+ return 85445659.44705395
104
+
105
+ }
106
+
107
+
108
+
109
+ func MERCATOR_OFFSET() -> Double {
110
+
111
+ return 268435456.0
112
+
113
+ }
114
+
115
+
116
+
117
+ func longitudeToPixelSpaceX(longitude: Double) -> Double {
118
+
119
+ return round(MERCATOR_OFFSET() + MERCATOR_RADIUS() * longitude * .pi / 180.0);
120
+
121
+ }
122
+
123
+ ```
124
+
125
+
126
+
127
+ とありました。最後の行はわかりませんでした。
128
+
129
+ ```swift
130
+
131
+ [_mapView setCenterCoordinate:_mapView.region.center zoomLevel:newZoomLevel animated:YES];
132
+
133
+ ```
134
+
135
+ 上の行は分かりませんでした。どうか宜しくお願い致します。

2

分からない(エラーになる)部分は、この2文です。

2017/06/20 02:49

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
@@ -73,3 +73,21 @@
73
73
 
74
74
 
75
75
  宜しくお願いいたします。
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ ```swift3
84
+
85
+ double longitudeMaxInPixel = [self longitudeToPixelSpaceX:longitudeMax];
86
+
87
+
88
+
89
+ [_mapView setCenterCoordinate:_mapView.region.center zoomLevel:newZoomLevel animated:YES];
90
+
91
+ ```
92
+
93
+ 誠に申し訳ありませんが、宜しくお願い致します。

1

objective-cからswiftに変換してください。ネット上のツールでは完全には変換できませんでした。

2017/06/20 02:11

投稿

harima
harima

スコア17

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,63 @@
13
13
  let zoomLevel = 20 - log2(zoomScale)
14
14
 
15
15
  ```
16
+
17
+
18
+
19
+ 私が求めていると思われるソースがネット上にありました。ただし、objective-cで書かれており、理解できません。どなたか、swiftに変換していただけないでしょうか?
20
+
21
+ ```swift3
22
+
23
+ - (NSUInteger)getCurrentZoomLevel {
24
+
25
+ // get longitude of right edge and left edge;
26
+
27
+ CLLocationDegrees longitudeMax = self.region.center.longitude + self.region.span.longitudeDelta /2.0;
28
+
29
+ CLLocationDegrees longitudeMin = self.region.center.longitude - self.region.span.longitudeDelta /2.0;
30
+
31
+
32
+
33
+ // calc get longitude delta in pixel
34
+
35
+ double longitudeMaxInPixel = [self longitudeToPixelSpaceX:longitudeMax];
36
+
37
+ double longitudeMinInPixel = [self longitudeToPixelSpaceX:longitudeMin];
38
+
39
+ double scaledMapWidth = longitudeMaxInPixel - longitudeMinInPixel;
40
+
41
+
42
+
43
+ // calc zoom scale
44
+
45
+ double mapSizeInPixels = self.bounds.size.width;
46
+
47
+ double zoomScale = scaledMapWidth / mapSizeInPixels;
48
+
49
+ NSUInteger zoomLevel = 20 - log2(zoomScale);
50
+
51
+
52
+
53
+ return (zoomLevel > 0)? zoomLevel : 0;
54
+
55
+ }
56
+
57
+
58
+
59
+
60
+
61
+ NSUInteger zoomLevel = (int)[_mapView getCurrentZoomLevel];
62
+
63
+ NSUInteger newZoomLevel = (zoomLevel > 1)? zoomLevel-1 : 0;
64
+
65
+
66
+
67
+ [_mapView setCenterCoordinate:_mapView.region.center zoomLevel:newZoomLevel animated:YES];
68
+
69
+
70
+
71
+ ```
72
+
73
+
74
+
75
+ 宜しくお願いいたします。