这只是我遇到问题的地点之一的示例。我正在从返回中获取 place_id 以尝试获取更多字段,但是当您实际输入它返回的 place_id 时,它会提供附近的政府大楼而不是加油站。我尝试了其他功能并将类型限制为更具体,但这无济于事。
import requests
url = " https://maps.googleapis.com/maps/api/geocode/json? address=203%20N%20Commerce%20ST%20Geneva%20AL&key=MY_KEY"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
我希望这能给我加油站的位置,而不是其他地方。这个 place_id 似乎是错误的 "place_id" : "ChIJCekaM2pGkogRwX3FIx8vFN8"
由于您正在使用地理编码器工具查询地址
203 N Commerce St Geneva, AL
,当然它会返回THAT SPECIFIC ADDRESS 的地点ID。 Geocoding API 不会接受模棱两可的查询,它会从特定查询返回特定结果。所以这就解释了为什么地点 ID:ChIJCekaM2pGkogRwX3FIx8vFN8
返回您查询的地址而不是您要查找的加油站名称。
所以要解决这个问题,您需要专门对要获取Place ID的Place Name进行地理编码。查询了你说的地址,才知道Gas Station Name是
Geneva Citgo
。所以你可以使用它,它应该是这样的:
import requests
url = " https://maps.googleapis.com/maps/api/geocode/json?address=Geneva Citgo&key=API_KEY"
payload = {}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
有了这个,您将获得
ChIJp15WymtGkogRayP4w572um0
,这是提到的加油站的确切地点ID。
现在回答你的主要问题......
find_place
根据地址获取公司名称?如上所述,由于地址
203 N Commerce St Geneva, AL
有自己的地点 ID,当您进行 find_place
查询时,它将返回地址本身。要解决这个问题,您需要特别提及您要查找的内容。在这种情况下,GAS STATIONS
。所以当你做find_place
查询的时候,一定要特别说明你要找的,比如这样的格式:The_place_you_are_looking_for + address
.
因此,您的代码应如下所示:
import requests
url = "https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=gas station in 203 N Commerce St Geneva AL&inputtype=textquery&fields=formatted_address%2Cname%2Crating%2Copening_hours%2Cgeometry&key=API_KEY"
payload = {}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
请注意,查询以这种形式明确说明了我想要的内容:
gas station in 203 N Commerce St Geneva AL
。这样,它将返回您正在寻找的加油站的地名,即Geneva Citgo
。 (不过,由您决定要包含哪些字段)。
Ref to Find Place documentation 了解更多信息。
您还可以使用文本搜索,因为文档特别说明:
“文本搜索基于字符串返回有关一组地点的信息——例如“纽约的比萨饼”或“渥太华附近的鞋店”或“123 Main Street”。该服务以匹配的地点列表响应文本字符串和任何已设置的位置偏差。”
参考文本搜索文档了解更多信息。
希望这有帮助!如果这能解决您的问题,请随时发表评论。