ポストギスとジオジャンゴを使用して、指定された座標から近くのレストランを表示する機能を実装しました。しかし、私は、kmまたはmの距離を、ユーザーまたは指定された座標から近くにある距離に基づいて見つける必要があります。私は距離に関する質問がSOで尋ねられますが、これは少し異なります。私はレストランのリスト(リストビュー)を表示しています。レストランの詳細ではなく、特定のレストランの場所をIDから表示します。だから私は今レストランのリストビューで各レストランの距離をどのように表示するべきか考えが必要です。各レストランの距離をキロメートルまたはmで表示する
私の考えは、私はここで
from django.contrib.gis.geos import GEOSGeometry
pnt = GEOSGeometry('SRID=4326;POINT(40.396764 -3.68042)')
pnt2 = GEOSGeometry('SRID=4326;POINT(48.835797 2.329102 )')
pnt.distance(pnt2)*100
を行うことによって距離を計算するためのコンテキストと使用テンプレートフィルタとして(私はURLから渡していていること)緯度とLNG詳細
内のコードで渡す必要がありますdef nearby_restaurant_finder(request, current_lat, current_long):
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D
user_location = Point(float(current_long), float(current_lat))
distance_from_point = {'km': 500}
restaurants = Restaurant.gis.filter(
location__distance_lte=(user_location, D(**distance_from_point)))
restaurants = restaurants.distance(user_location).order_by('distance')
context = {
'restaurants': restaurants
}
return render(request, 'restaurant/nearby_restaurant.html', context)
url(r'^nearby_restaurant/(?P<current_lat>-?\d*.\d*)/(?P<current_long>-?\d*.\d*)/$',
views.nearby_restaurant_finder, name="nearby-restaurant"),
{% block page %}
{% for restaurant in restaurants %}
<h1>Nearby Restaurants are:</h1>
<h3>{{ restaurant.name }}</h3>
{% empty %}
<h3>No Match Found</h3>
{% endfor %}
{% endblock %}
どのように私は
あなたの解決策にはありがとうございます。私は距離を表示するために次のことをしましたが、これが動作しているかどうかわかりません。どうすればそれを知ることができますか? https://gist.github.com/SanskarSans/fe05e1d28552b9f5cc077e0ffa23a2f4 – Serenity
前のコードの回答と比較してください。あなたがURLを打つとどうなりますか? – zsoobhan
解決策に問題はありません。私はちょうど計算された距離が正しいかどうかを特定するためのヒントを求めています:)。また、距離計算のコードに関する提案はありますか? – Serenity