ProMotion-map 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd1631631482aaab778c200a08fd9da073ff2a09
4
- data.tar.gz: 449e6a458a2f7f4bb6ecd065e72a59da1478d541
3
+ metadata.gz: 8240e335c3b662a901157fbb77f9ebb3e2e687db
4
+ data.tar.gz: c56b64500694327784914a24deed09373615ccb9
5
5
  SHA512:
6
- metadata.gz: e65b08bce584b7641b8cb5f3e119f17527633dbe0e46eb15855ab0f1c2c4dbbfd34ea080807651c03c920a4629c7684ba397acf4def2b39fe8d7817759f64d4b
7
- data.tar.gz: 2cff95504df81f9658bd8dd225bd5d4d1669a384e4994c90c143878be425556ac103f85caf2e42ececbc225e4a9e67ceeb9cc4178377b2f835f54316a59ee8e1
6
+ metadata.gz: bfbd94ade841e4def1627d3c54f96e2a81b3d1967d24652efc19e2ee3e0a69e6374d1870d7e0561ec9f8f101a70e1f87de463d7247cb66bc42a7307123939592
7
+ data.tar.gz: fb25b102018267b8ef5a57081c1e59fcd869f3f5435543546a3f1486ce67b38fa56d67a777bf431b1ef4247a3546afea5c54abef9d39fd4461981f7b6cac3ef1
data/README.md CHANGED
@@ -22,46 +22,51 @@ class MyMapScreen < PM::MapScreen
22
22
  title "My Map"
23
23
  start_position latitude: 35.090648651123, longitude: -82.965972900391, radius: 4
24
24
 
25
- def on_appear
26
- update_annotation_data
27
- end
28
-
29
25
  def annotation_data
30
26
  [{
31
27
  longitude: -82.965972900391,
32
28
  latitude: 35.090648651123,
33
29
  title: "Rainbow Falls",
34
- subtitle: "Nantahala National Forest"
30
+ subtitle: "Nantahala National Forest",
31
+ action: :show_forest
35
32
  },{
36
33
  longitude: -82.966093558105,
37
34
  latitude: 35.092520895652,
38
35
  title: "Turtleback Falls",
39
- subtitle: "Nantahala National Forest"
36
+ subtitle: "Nantahala National Forest",
37
+ action: :show_forest
40
38
  },{
41
39
  longitude: -82.95916,
42
40
  latitude: 35.07496,
43
- title: "Windy Falls"
41
+ title: "Windy Falls",
42
+ action: :show_forest
44
43
  },{
45
44
  longitude: -82.943031505056,
46
45
  latitude: 35.102516828489,
47
46
  title: "Upper Bearwallow Falls",
48
- subtitle: "Gorges State Park"
47
+ subtitle: "Gorges State Park",
48
+ action: :show_forest
49
49
  },{
50
50
  longitude: -82.956244328014,
51
51
  latitude: 35.085548421623,
52
52
  title: "Stairway Falls",
53
53
  subtitle: "Gorges State Park",
54
- your_param: "CustomWhatever"
54
+ your_param: "CustomWhatever",
55
+ action: :show_forest
55
56
  }, {
56
57
  longitude: -82.965972900391,
57
58
  latitude: 35.090648651123,
58
59
  title: "Rainbow Falls",
59
60
  subtitle: "Nantahala National Forest",
60
- image: UIImage.imageNamed("custom-pin")
61
+ image: UIImage.imageNamed("custom-pin"),
62
+ action: :show_forest
61
63
  }]
62
64
  end
63
65
 
64
-
66
+ def show_forest
67
+ selected = selected_annotations.first
68
+ # Do something with the selected annotation.
69
+ end
65
70
  end
66
71
  ```
67
72
 
@@ -82,54 +87,19 @@ end
82
87
 
83
88
  Method that is called to get the map's annotation data and build the map. If you do not want any annotations, simply return an empty array.
84
89
 
85
- ```ruby
86
- def annotation_data
87
- [{
88
- longitude: -82.965972900391,
89
- latitude: 35.090648651123,
90
- title: "Rainbow Falls",
91
- subtitle: "Nantahala National Forest"
92
- },{
93
- longitude: -82.965972900391,
94
- latitude: 35.090648651123,
95
- title: "Rainbow Falls",
96
- subtitle: "Nantahala National Forest",
97
- image: "custom-pin" # Use your own custom image. It will be converted to a UIImage automatically.
98
- },{
99
- longitude: -82.966093558105,
100
- latitude: 35.092520895652,
101
- title: "Turtleback Falls",
102
- subtitle: "Nantahala National Forest"
103
- },{
104
- longitude: -82.95916,
105
- latitude: 35.07496,
106
- title: "Windy Falls"
107
- },{
108
- longitude: -82.943031505056,
109
- latitude: 35.102516828489,
110
- title: "Upper Bearwallow Falls",
111
- subtitle: "Gorges State Park"
112
- },{
113
- longitude: -82.956244328014,
114
- latitude: 35.085548421623,
115
- title: "Stairway Falls",
116
- subtitle: "Gorges State Park",
117
- your_param: "CustomWahtever"
118
- }]
119
- end
120
- ```
121
-
122
90
  All possible properties:
123
91
 
124
92
  ```ruby
125
93
  {
126
- longitude: -82.956244328014,
127
- latitude: 35.085548421623,
128
- title: "Stairway Falls",
94
+ longitude: -82.956244328014, # REQUIRED
95
+ latitude: 35.085548421623, # REQUIRED
96
+ title: "Stairway Falls", # REQUIRED
129
97
  subtitle: "Gorges State Park",
130
98
  image: "my_custom_image",
131
99
  left_accessory: my_button,
132
- right_accessory: my_other_button
100
+ right_accessory: my_other_button,
101
+ action: :my_action, # Overrides :right_accessory
102
+ action_button_type: UIButtonTypeContactAdd # Defaults to UIButtonTypeDetailDisclosure
133
103
  }
134
104
  ```
135
105
 
@@ -139,12 +109,18 @@ Use `:image` to specify a custom image. Pass in a string to conserve memory and
139
109
 
140
110
  Use `:left_accessory` and `:right_accessory` to specify a custom accessory, like a button.
141
111
 
142
- You can access annotation data you've arbitrarily stored in the hash by calling `annotation_instance.annotation_params[:your_param]`.
112
+ You can access annotation data you've arbitrarily stored in the hash by calling `annotation_instance.params[:your_param]`.
113
+
114
+ The `:action` parameter specifies a method that should be run when the detail button is tapped on the annotation. It automatically adds a `UIButtonTypeDetailDisclosure` button to the `:left_accessory`. In your method you can find out which annotation's accessory was tapped by calling `selected_annotations.first`.
143
115
 
144
116
  #### update_annotation_data
145
117
 
146
118
  Forces a reload of all the annotations
147
119
 
120
+ #### annotations
121
+
122
+ Returns an array of all the annotations.
123
+
148
124
  #### center
149
125
 
150
126
  Returns a `CLLocation2D` instance with the center coordinates of the map.
@@ -153,9 +129,25 @@ Returns a `CLLocation2D` instance with the center coordinates of the map.
153
129
 
154
130
  Sets the center of the map. `animated` property defaults to `true`.
155
131
 
156
- #### annotations
132
+ #### show_user_location
157
133
 
158
- Returns an array of all the annotations.
134
+ Shows the user's location on the map.
135
+
136
+ #### hide_user_location
137
+
138
+ Hides the user's location on the map.
139
+
140
+ #### showing_user_location?
141
+
142
+ Returns a `Boolean` of whether or not the map view is currently showing the user's location.
143
+
144
+ #### user_location
145
+
146
+ Returns a `CLLocation2D` object of the user's location or `nil` if the user location is not being tracked
147
+
148
+ #### zoom_to_user(radius = 0.05, animated=true)
149
+
150
+ Zooms to the user's location. If the user's location is not currently being shown on the map, it will show it first. `radius` is a `CLLocationDegrees` of the latitude and longitude deltas. _See Apple documentation for `MKCoordinateSpan` for more information._
159
151
 
160
152
  #### select_annotation(annotation, animated=true)
161
153
 
@@ -1,5 +1,6 @@
1
1
  module ProMotion
2
2
  class MapScreenAnnotation
3
+ attr_reader :params
3
4
 
4
5
  # Creates the new annotation object
5
6
  def initialize(params = {})
@@ -47,11 +48,6 @@ module ProMotion
47
48
  end
48
49
  end
49
50
 
50
- # Allows for retrieving your own custom values on the annotation
51
- def annotation_params
52
- @params
53
- end
54
-
55
51
  def method_missing(meth, *args)
56
52
  if @params[meth.to_sym]
57
53
  @params[meth.to_sym]
@@ -61,5 +57,11 @@ module ProMotion
61
57
  end
62
58
  end
63
59
 
60
+ # Deprecated
61
+ def annotation_params
62
+ PM.logger.warn("annotation.annotation_params is deprecated and will be removed soon. Please use annotation.params instead.")
63
+ @params
64
+ end
65
+
64
66
  end
65
67
  end
@@ -38,7 +38,7 @@ module ProMotion
38
38
  def center=(params={})
39
39
  PM.logger.error "Missing #:latitude property in call to #center=." unless params[:latitude]
40
40
  PM.logger.error "Missing #:longitude property in call to #center=." unless params[:longitude]
41
- params[:animated] = true
41
+ params[:animated] ||= true
42
42
 
43
43
  # Set the new region
44
44
  self.mapview.setCenterCoordinate(
@@ -116,26 +116,38 @@ module ProMotion
116
116
  def annotation_view(map_view, annotation)
117
117
  return if annotation.is_a? MKUserLocation
118
118
 
119
- identifier = annotation.annotation_params[:identifier]
119
+ params = annotation.params
120
+
121
+ identifier = params[:identifier]
120
122
  if view = map_view.dequeueReusableAnnotationViewWithIdentifier(identifier)
121
123
  view.annotation = annotation
122
124
  else
123
125
  # Set the pin properties
124
- if annotation.annotation_params[:image]
126
+ if params[:image]
125
127
  view = MKAnnotationView.alloc.initWithAnnotation(annotation, reuseIdentifier:identifier)
126
128
  else
127
129
  view = MKPinAnnotationView.alloc.initWithAnnotation(annotation, reuseIdentifier:identifier)
128
130
  end
129
131
  end
130
- view.image = annotation.annotation_params[:image] if view.respond_to?("image=") && annotation.annotation_params[:image]
131
- view.animatesDrop = annotation.annotation_params[:animates_drop] if view.respond_to?("animatesDrop=")
132
- view.pinColor = annotation.annotation_params[:pin_color] if view.respond_to?("pinColor=")
133
- view.canShowCallout = annotation.annotation_params[:show_callout] if view.respond_to?("canShowCallout=")
134
- if annotation.annotation_params[:left_accessory]
135
- view.leftCalloutAccessoryView = annotation.annotation_params[:left_accessory]
132
+ view.image = params[:image] if view.respond_to?("image=") && params[:image]
133
+ view.animatesDrop = params[:animates_drop] if view.respond_to?("animatesDrop=")
134
+ view.pinColor = params[:pin_color] if view.respond_to?("pinColor=")
135
+ view.canShowCallout = params[:show_callout] if view.respond_to?("canShowCallout=")
136
+
137
+ if params[:left_accessory]
138
+ view.leftCalloutAccessoryView = params[:left_accessory]
139
+ end
140
+ if params[:right_accessory]
141
+ view.rightCalloutAccessoryView = params[:right_accessory]
136
142
  end
137
- if annotation.annotation_params[:right_accessory]
138
- view.rightCalloutAccessoryView = annotation.annotation_params[:right_accessory]
143
+
144
+ if params[:action]
145
+ button_type = params[:action_button_type] || UIButtonTypeDetailDisclosure
146
+
147
+ action_button = UIButton.buttonWithType(button_type)
148
+ action_button.addTarget(self, action: params[:action], forControlEvents:UIControlEventTouchUpInside)
149
+
150
+ view.rightCalloutAccessoryView = action_button
139
151
  end
140
152
  view
141
153
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ProMotion-map
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickert
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-03 00:00:00.000000000 Z
12
+ date: 2014-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ProMotion
@@ -105,4 +105,3 @@ signing_key:
105
105
  specification_version: 4
106
106
  summary: Adds PM::MapScreen support to ProMotion. Extracted from ProMotion.
107
107
  test_files: []
108
- has_rdoc: