Форум сайта python.su
Привет, читал-читал документацию по GeoDjango. Но так и не придумал.
models.py
class Vacancy(models.Model): lat = models.FloatField('Latitude', blank = True) lng = models.FloatField('Longitude', blank = True)
Офлайн
Возможно стоит вспомнить математику)))) Пусть lat1 и lng1 это координаты исходной точки, lat2 и lng2 координаты любой точки поверхности, а D - расстояние между этих 2х точек. ^2 - квадрат числа D^2 = |lat1-lat2|^2+|lng1-lng2|^2
В Вашем случае достаточно знать |lat1-lat2|+|lng1-lng2|, и чем меньше это число, тем ближе точки
Ну а дальше используйте где хотите... если во вьюхе, то сортируйте список через lambda
Офлайн
используйте стандартный POINT а не отдельно координаты
как то так:
from django.contrib.gis.db import models class Vacancy(models.Model): location = models.PointField()
point_from = Point(12.4604, 43.9420) Vacancy.objects.all().distance(point_from, field_name='location').order_by('distance')
Отредактировано leechuck (Ноя. 8, 2013 23:26:09)
Офлайн
hulygun
Офлайн