2 votes

geokit -- utilisation de lat lng bruts dans les rails

J'ai utilisé GeoKit pour Rails et ça marche très bien. Cependant, j'ai remarqué que lorsqu'on extrait beaucoup de listes, le chargement est TRÈS lent.

Je me demande si c'est parce qu'il interroge Google ou une source externe avant de renvoyer les résultats. Si c'est le cas, y a-t-il un moyen d'utiliser les coordonnées lat et lng brutes (que j'ai) pour calculer simplement la distance en interne ?

Ou une formule simplement rubis sur l'ongle qui fera cela pour moi ?

6voto

jimworm Points 1961

En termes de distance :

Geokit-gem fournit une méthode pour calculer la distance entre deux points :

# model has acts_as_mappable
Model.distance_between obj1, obj2, :units => :kms, :formula => :sphere

Finder-wise :

Geokit-rails (un plugin) a un finder qui génère du SQL (pour mysql, postgres, et SQL server) pour calculer les distances, vous permettant de trouver des lignes dans une certaine distance :

Model.find_within(100, :units => :kms)

Il calcule les distances pour toutes les lignes, mais n'a pas besoin d'interroger des ressources externes. Si votre table est vraiment énorme, il pourrait être utile (mais je n'en suis pas sûr) de la réduire en calculant d'abord les plages de lat/ng :

Model.where(:lat => (x-0.05)..(x+0.05), :lng => (y-0.05)..(y+0.05)).find_within(z, :units => :kms)

Si cela ne vous aide toujours pas, vous devrez écrire un SQL personnalisé. Les calculs de distance sql pour geokit-rails sont ici : https://github.com/andre/geokit-rails/tree/master/lib/geokit-rails/adapters

1voto

arnep Points 2737

Vous pouvez utiliser les formules pour les sphères pour calculer la distance de deux points sur la surface.

Voici une implémentation JavaScript pour calculer la distance entre les latitudes/longitudes (et d'autres choses utiles). Cela ne devrait pas demander trop de travail de traduction en ruby ;-)

http://www.movable-type.co.uk/scripts/latlong.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X