10
votes

Meilleur service de géocodage pour les développeurs iPhone

J'ai fait une application qui obtient une gamme d'adresses d'un service Web et je souhaite les cartographier. Je sais qu'Apple l'a laissé sur Mapkit, y compris seulement un géocodeur inversé. Je me demandais quelle était la meilleure façon d'aborder ce problème. Service Web? Google Maps API (comment fonctionne les clés de l'API?)? CloudMade?

Quelles sont vos opinions sur lesquelles le service est le plus rapide, le plus facile à utiliser et le moins cher (espérons-le gratuit )?


0 commentaires

5 Réponses :


1
votes

J'utilise un "WebService reposant" pour le géocodage inverse à l'aide de Google Maps et une fois que j'ai obtenu les coordonnées, je les stocke dans SQLite pour référence ultérieure. Le service renvoie une chaîne JSON que j'ai ultérieurement analyser dans l'iPhone.

Quelque chose comme: xxx


0 commentaires

5
votes

Ianal, mais si l'application que vous construisez sera libre, je pense que vous pouvez utiliser gratuitement l'API Google Maps. Il est limité à 15 000 demandes de géocodage par jour, mais selon les documents, celles liées à la propriété intellectuelle et non à l'API. Vous pouvez obtenir une touche API immédiatement - Aucune approbation requise. (Si votre application ne sera pas disponible librement, vous devrez vous inscrire à Google Maps Premier.)

Gmaps est maintenant basé sur le repos API de géocodage sur http (C'était si vous deviez utiliser leur API JavaScript, qui était une douleur sur iPhone). Il peut retourner dans Json, qui est trivial pour analyser avec TouchJson si vous avez besoin de la Données supplémentaires, ou CSV, qui seront encore plus faciles si tout ce dont vous avez besoin est LAT / LON. Donc, vous pouvez simplement créer un objet conforme à la Protocole de mkannotation qui récupérera le JSON / CSV à partir de l'API à l'aide d'une NSURLConnection ou d'ASIHTTPQUEST, analysez-la et renvoyez la variable point comme la coordonnée et Construisez votre carte comme requise.


1 commentaires

Ce n'est pas tout à fait vrai avec les transporteurs mobiles, ils utilisent souvent une passerelle / des proxies qui apporte enfin la même adresse IP pour des milliers d'utilisateurs, qui dans des zones urbaines très encombrées comme où je suis, Paris, la France, passe sur Google Limits ... et vers 17 heures, 503 erreurs pour de nombreux utilisateurs ...



5
votes

Dernière documentation concernant l'utilisation des clés de l'API avec API de géocodage Google Maps.

Obtenez la touche API

On peut faire référence au bas de la page que vous pouvez utiliser une clé d'API sans restriction générique pour les tests sur n'importe quelle plate-forme.

Tant pour iOS, je pense que nous pouvons simplement suivre la documentation de Google Maps SDK pour iOS.


6 commentaires

Merci beaucoup! Je n'aurais jamais su que la nouvelle version est sortie. J'ai enfin trouvé une bonne solution.


Y a-t-il de toute façon à Geocode plusieurs adresses dans une demande? J'ai un éventail d'endroits où j'ai besoin de mapper et que la quantité d'endroits peut grimper dans les années cinquante. Je continue à obtenir l'erreur de "trop ​​de requêtes" après l'autour du dixième


Je ne suis pas sûre de ça. Je pense que vous devez explorer l'API Maps concernant plusieurs demandes. Je suis assez douteux qu'ils accepteraient des demandes ultérieures. Mais ils peuvent avoir une méthode pour accepter plusieurs adresses. Je suggère de contacter Google pour votre problème.


Notez que, selon l'accord avec Google, vous êtes uniquement autorisé à utiliser l'API de géocodage avec une carte Google. Puisqu'il s'agit d'Apple Maps ès-journal, vous violerez l'accord.


Cette réponse a été écrite en 2010. Pas de cartes Apple ce jour-là.


Alors, quelle est la réponse maintenant? Quel service de géocodage est une option viable? MapQuest a une restriction similaire.



0
votes

Selon Google et Yahoo, leurs services de géocodage respectifs ne permettent pas de "stocker pour une utilisation future". Sauf si j'ai mal compris, vous ne pouvez pas stocker les résultats de la requête dans une forme de base de données. Sinon, ce serait vraiment facile de google (maintenant 50 000 demandes par jour).


0 commentaires

4
votes

Utilisez API de géocodage Apple pour ce

http://developer.apple.com/library/ios/#documentation/usereexperience/conceptual/locactawareenpg/uscodgeocoders/ougegeocoders.html p>

" La classe Cligeocoder fournit des services pour la conversion entre une coordonnée (spécifiée comme une latitude et une longitude) et la représentation conviviale de cette coordonnée. Une représentation conviviale de la coordonnée se compose généralement des informations de rue, de ville, d'état et de pays correspondant à l'emplacement donné, mais il peut Contiend également un point d'intérêt, des points de repère ou d'autres informations d'identification pertinents. Un objet Geocoder est un objet à un coup fonctionnant avec un service basé sur le réseau pour rechercher des informations de plate-forme pour sa valeur de coordonnée spécifiée. P>

Pour utiliser un objet géocoder, créez-le et appelez l'un de ses méthodes de géocodage ERSE pour commencer la demande. Les demandes de géocodage inverse prennent une valeur de latitude et de longitude et trouvent une adresse lisible par l'utilisateur. Les demandes de géocodage en avant prennent une adresse lisible par l'utilisateur et trouvent la valeur de latitude et de longitude correspondante. Les demandes de géocodage avant peut également renvoyer des informations supplémentaires sur l'emplacement spécifié, telles qu'un point d'intérêt ou un bâtiment à cet endroit. Pour les deux types de demande, les résultats sont renvoyés à l'aide d'un objet CLPLAcemark. Dans le cas des demandes de géocodage en avant, plusieurs objets de plate-forme peuvent être renvoyés si les informations fournies ont donné plusieurs emplacements possibles. " P>

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


1 commentaires

Merci pour l'indice, je me sens beaucoup plus confortable d'utiliser Cligeocoder au lieu de l'approche Google Maps 'tish Party'!