module MotionGeocoder::AppleApi::Place

Public Class Methods

auto_complete(input, params={}, &block) click to toggle source
# 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) click to toggle source
# 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