我有點困惑,我應該如何將我的SRID值設置到我的GeoDjango PointField中,以便通過Google地圖api將地址解析爲經由django-postgis查詢的座標和距離的地址環境中保持準確?GeoDjango,用於PointField與Google Maps V3 API接口的SRID是什麼?
我正在閱讀圍繞網絡和疊層流程的線程,並且不確定要做什麼。正如你可以看到我的應用程序正在使用gemap和谷歌地圖API來對地址進行地理編碼。現在我的座標字段沒有設置默認爲4326的SRID(EPSG:4326)。現在顯然這將地球視爲一個地球,而不是一個平坦的表面。
根據以下問題的東西,如谷歌地圖的答案使用(EPSG 3857),這顯然有900913. https://gis.stackexchange.com/questions/48949/epsg-3857-or-4326-for-googlemaps-openstreetmap-and-leaflet
的SRID那麼,這是否意味着我要我的SRID設置爲900913?我的餐廳模型的所有座標都使用地理編碼器以下面所示的相同方法保存。我會這樣認爲的。
現在這是我扔掉的地方,以下教程http://invisibleroads.com/tutorials/geodjango-googlemaps-build.html使用SRID設置爲4326(默認值)的點場,並且它們的標記點在Google地圖上完美顯示。
目前我的查詢是非常準確的,但仍然感覺似乎有點關閉。
幫助表示讚賞,謝謝!
from geopy.geocoders import GoogleV3
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D
geo = GoogleV3()
def home_page(request):
distance = 3680
address, coordinates = geo.geocode('Swanston Street, Melbourne Australia')
ref_location = Point(coordinates)
query = Restaurant.objects.filter(restaurant_location__distance_lte=(ref_location, D(m=distance))).distance(ref_location).order_by('distance')
return render(request, 'swings/home.html', {'restaurants': query})
餐廳型號
class Restaurant(models.Model):
name = models.CharField(max_length=25, blank=False)
user = models.ForeignKey(User)
address = models.CharField(max_length=50, blank=False)
restaurant_location = models.PointField(null=False, blank=False)
objects = models.GeoManager()
def __str__(self):
return self.name
這是非常有益的。歷史課實際上有助於清理事情。謝謝! – user3739703
這是否也意味着我應該使用4326從搜索API返回的點? – bigblind
@bigblind,對不起,哪個搜索API? –