2013-05-22 3 views
0

Je veux faire ce qui suit - Permet aux utilisateurs d'entrer une adresse physique dans l'application ios. - Cette adresse est convertie en longitude/latitude - Le code du serveur Django vérifie si vous voyez des endroits proches.Convertir l'adresse à la longitude et la latitude

Comment puis-je le faire le plus efficacement? Dois-je convertir l'adresse en longitude et latitude dans l'application ios, puis envoyer les coordonnées au code du serveur django, ou dois-je envoyer l'adresse au code du serveur django, puis l'adresse secrète à la longitude et la latitude?

toute aide serait appréciée!

+0

Jetez un oeil à [GeoDjango] (https://docs.djangoproject.com/en/dev/ref/contrib/gis /) - il vous permet de faire des recherches géo-spatiales ... Pour convertir l'adresse en coordonnées, vous aurez besoin d'une API externe. –

+0

J'utilise ce javascript et ça fonctionne très bien: https://github.com/ubilabs/geocomplete/#populate-form-data –

Répondre

5

Selon Location Awareness Programming Guide de l'Apple Vous pouvez y parvenir en utilisant un objet CLGeocoder:

CLGeocoder* geocoder = [[CLGeocoder alloc] init]; 
[geocoder geocodeAddressString:@"Your Address" 
    completionHandler:^(NSArray* placemarks, NSError* error){ 
     for (CLPlacemark* aPlacemark in placemarks) 
     { 
     // Process the placemark. 
     } 
}]; 

Un objet CLPlacemark a une propriété appelée emplacement qui donne la latitude et la longitude du lieu.

+1

Gardez à l'esprit que 'CLGeocoder' a été ajouté dans iOS 5.0 et que cette question a été taguée avec 4.0. Cette solution ne fonctionnera pas sous iOS 4.x. – rmaddy

+0

Mon mauvais, je n'avais pas remarqué le tag! Je m'attendrais juste à ce que l'auteur souligne ce besoin dans la question elle-même. – micantox

+0

OK, il n'y a plus vraiment besoin de supporter iOS 4 de toute façon. – rmaddy

1

Vous pouvez utiliser cette fonction pour obtenir (latitude, longitude) tuple sur le côté django

import urllib, urllib2 
import simplejson as json 

def getLatLng(address): 
    """ Native address format is House Number, Street Direction, Street Name, 
    Street Suffix, City, State, Zip, Country """ 

    TIMEOUT = 3 

    try: 
     url = "http://maps.google.com/maps/api/geocode/json?address=" + urllib.quote_plus(address.encode('utf-8')) + "&sensor=false" 
     opener = urllib2.build_opener() 
     req = urllib2.Request(url) 

     data = json.load(opener.open(req, None, TIMEOUT)) 
     results = data['results'] 
     if len(results): 
      location = results[0]['geometry']['location'] 
      return (location['lat'], location['lng']) 
     else: 
      return None 
    except: 
     return None 
Questions connexes