我在本地和服务器上拨打了两个电话( https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Singapore&key=MYAPIKEY )。但回应看起来不同。
服务器:
{u'terms': [{u'value': u'Singapore', u'offset': 0}], u'description': u'Singapore', u'reference': u'CjQhAAAAqQkHLg3DEkoYCh6lVEJiqKveU1CMNkbK_6qQIcEZFtxd_NxVYVIbb1m2-koDTuBtEhDkB8K6HUla_TOyBQQDKAR3GhQ6-NKJG7K_w2XgfUtKuqTEFCR70A', u'structured_formatting': {u'main_text_matched_substrings': [{u'length': 9, u'offset': 0}], u'main_text': u'Singapore'}, u'matched_substrings': [{u'length': 9, u'offset': 0}], u'place_id': u'ChIJdZOLiiMR2jERxPWrUs9peIg', u'id': u'40c4b38e02b2cbbc038a8f25974c482dd9ee466f', u'types': [u'country', u'political', u'geocode']}
本地:
{u'terms': [{u'value': u'Singapore', u'offset': 0}], u'description': u'Singapore', u'reference': u'CjQhAAAAW1UCg8Y9NAxV8rFkCcTutkBeufvz4rT2DiqCHwMgefWa_xKk5bwy6XZeegDpgfCSEhAzfOhzl7AfxFQvKnPKZ9FaGhSA7Obi7wXY-NGXB6g6lZO66GrQ-w', u'structured_formatting': {u'main_text_matched_substrings': [{u'length': 9, u'offset': 0}], u'main_text': u'Singapore'}, u'matched_substrings': [{u'length': 9, u'offset': 0}], u'place_id': u'ChIJyY4rtGcX2jERIKTarqz3AAQ', u'id': u'de9886df6eae88551e41600d0927dc8eb9f2c6ca', u'types': [u'locality', u'political', u'geocode']}
从上面的结果来看, id 看起来与众不同。任何原因?? 以及在服务器和本地获得相同结果的解决方案。
答案 0 :(得分:0)
有趣的问题。
我会尽力帮助了解正在发生的事情以及如何解决这个问题。
正如您所看到的,服务器的响应会返回国家/地区ID,因为类型为[u'country', u'political', u'geocode']
。来自本地计算机的响应返回城市地点ID,类型为[u'locality', u'political', u'geocode']
。
我认为本地计算机和服务器的地理位置不同。如果您未明确指定视口并根据IP地址的地理位置偏置结果,则地点自动填充还会考虑发送请求的计算机的公共IP地址。例如,当有人从美国搜索新加坡时,他/她通常意味着该国家,因此国家搜索在美国更受欢迎,并且建议的结果是国家/地区。相反,当地人可能更多地搜索城市而不是乡村,所以在新加坡,城市的结果有更高的重要性。
要解决您的问题并获得相同的结果,您应该在请求中指定应用位置和半径参数的视口。
让我们将视口中心设置为1.395126,103.831787,半径设置为50km
中显示的位置现在将半径增加到500km
我希望这能解释你的怀疑。