我想搜索某個國家的一些商店,例如:
查找美國的所有耐克商店。
我使用 Google Map Place API 來實作它。但是我發現Google API似乎不允許搜索位于特定國家/地區的目標,并且它也限制了搜索半徑(50000米)。
所以,我現在嘗試使用如下的“掃描視窗”,這是我能想到的最可行的方法。

主要概念是給兩個經緯度點(img中的藍色點)做一個平面,程式會把這個區域切成許多固定半徑的小圓圈。然后我們可以使用每個圓的中心(紅點)來查詢 Google API。
但是當我使用切片功能時,如果我想按距離移動一個點,我知道如何獲得這些紅點......
有誰知道如何實作這個功能?或者有沒有其他方法可以實作我的目標?
非常感謝。
uj5u.com熱心網友回復:
我剛剛找到了解決這個問題的方法,這是我的示例代碼:
from geopy import distance
# slice the big area into small ones for Google map radius restriction problem
def slice_search_area(point_a=(None, None), point_b=(None, None), region=None, radius=50000):
if (None in point_a) or (None in [point_b]):
return []
p1 = point_a
p2 = (point_a[0], point_b[1])
p3 = point_b
p4 = (point_b[0], point_a[1])
# get the start point (move East first, then move South)
tmp_point = distance.distance(meters=radius).destination(p1, bearing=90)
start_point = distance.distance(meters=radius).destination(tmp_point, bearing=180)
# get every (latitude, longitude) of the points
scan_points = list()
row_start_point = start_point
while row_start_point[0] > p4[0]:
point = row_start_point
while point[1] < p2[1]:
# save (latitude, longitude)
scan_points.append((point.latitude, point.longitude))
# point move East
point = distance.distance(meters=radius).destination(point, bearing=90)
row_start_point = distance.distance(meters=radius).destination(row_start_point, bearing=180)
return scan_points
這是我的測驗代碼:
country_area = {
'tw': [(25.34141, 120.10243), (21.959811, 121.986222)]
}
a = country_area['tw'][0]
b = country_area['tw'][1]
p = slice_search_area(a, b, 'tw')
for each in p:
print(each)
結果:
(24.889205690304994, 120.59910323641213)
(24.88838533068927, 121.0939524816418)
(24.887565001719338, 121.5887984580001)
(24.437811397277283, 120.59910323641213)
(24.437007840789235, 121.09217552708851)
(24.436204314108405, 121.58524469306849)
(23.98639017250887, 120.59910323641213)
(23.985603303344558, 121.09044150686496)
(23.98481646316774, 121.58177679194344)
(23.53494238775737, 120.59910323641213)
(23.53417209335193, 121.08874975902926)
(23.5334018271324, 121.57839343089873)
(23.083468421486256, 120.59910323641213)
(23.082714592440123, 121.08709964298127)
(23.081960790795765, 121.57509332888482)
(22.631968658771996, 120.59910323641213)
(22.631231188779743, 121.08549053882054)
(22.630493745421962, 121.57187524624496)
(22.180443491209363, 120.59910323641213)
(22.179722276991253, 121.0839218467313)
(22.179001088656495, 121.56873798348572)
如果我在谷歌地圖上標記點,我可以得到:

可用于通過Google Map API 搜索每個圓圈中的目標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/381333.html
標籤:蟒蛇-3.x 谷歌地图 谷歌API 地理定位 数据分析
上一篇:AndroidViewModelObservers直到方向改變才作業(ViewModel作業,但更改為LiveData會導致問題)
