Module: MotionGeocoder::AppleApi::Place

Defined in:
lib/motion-geocoder/apple_api/place.rb

Constant Summary collapse

@@local_search =
nil

Class Method Summary collapse

Class Method Details

.auto_complete(input, params = {}, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/motion-geocoder/apple_api/place.rb', line 18

def self.auto_complete(input, params={}, &block)
  @@local_search.cancel if !!@@local_search
  
  request = build_request input, params

  @@local_search = MKLocalSearch.alloc.initWithRequest request
  @@local_search.startWithCompletionHandler lambda {|response, e|
    if response && !response.mapItems.empty?
      results = response.mapItems.map do |item|
        {
          name: item.name,
          address: item.placemark.title,
          coordinate: {
              lat: item.placemark.coordinate.latitude,
              lng: item.placemark.coordinate.longitude
            }
        }
      end
      block.call results
    end
  }

end

.build_request(input, params) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/motion-geocoder/apple_api/place.rb', line 6

def self.build_request(input, params)
  lat = params[:lat]
  lng = params[:lng]
  rad = params[:radius] || 5000
  
  region = MKCoordinateRegionMakeWithDistance CLLocationCoordinate2DMake(lat, lng), rad, rad
  request = MKLocalSearchRequest.alloc.init
  request.region = region
  request.naturalLanguageQuery = NSString.stringWithUTF8String(input)
  request
end