lib/ProMotion/map/map_screen_annotation.rb in ProMotion-mapbox-0.1.1 vs lib/ProMotion/map/map_screen_annotation.rb in ProMotion-mapbox-0.1.2

- old
+ new

@@ -4,11 +4,10 @@ def initialize(params = {},map_view) @params = params @map_view = map_view set_defaults - if @params[:coordinate] @params[:latitude] = @params[:coordinate].latitude @params[:longitude] = @params[:coordinate].longitude @coordinate = @params[:coordinate] initWithMapView(map_view, coordinate: @coordinate, andTitle: @params[:title]) @@ -17,21 +16,34 @@ initWithMapView(map_view, coordinate: @coordinate, andTitle: @params[:title]) else PM.logger.error("You are required to specify :latitude and :longitude or :coordinate for annotations.") nil end + self.userInfo = @params end def set_defaults - @params = { - title: "Title", - pin_color: :red, - identifier: "Annotation-#{@params[:pin_color]}-#{@params[:image]}", - show_callout: true, - animates_drop: false, - maki_icon: nil, - }.merge(@params) + if @params.class == Hash + @params = { + title: "Title", + pin_color: :red, + identifier: "Annotation-#{@params[:pin_color]}-#{@params[:image]}", + show_callout: true, + animates_drop: false, + maki_icon: nil, + }.merge(@params) + elsif @params.class == RMQuadTreeNode # Clustered pins + @params = { + title: @params.annotations.count, + coordinate: @params.clusterAnnotation.coordinate, + pin_color: :purple, + identifier: "Annotation-cluster", + show_callout: true, + animates_drop: false, + maki_icon: nil, + } + end end def title @params[:title] end @@ -58,10 +70,20 @@ @coordinate = CLLocationCoordinate2D.new(new_coordinate[:latitude], new_coordinate[:longitude]) else @coordinate = new_coordinate end end - + + def self.new_with_rmannotation(rmannotation,map_view) + annotation = self.new(rmannotation.userInfo, map_view) + %w(coordinate title subtitle userInfo annotationType annotationIcon + position layer clusteringEnabled + isClusterAnnotation isUserLocationAnnotation).each do |meth| + annotation.send("#{meth}=", rmannotation.send(meth)) + end + annotation + end + def method_missing(meth, *args) if @params[meth.to_sym] @params[meth.to_sym] else PM.logger.warn "The annotation parameter \"#{meth}\" does not exist on this pin."