我打算使用 Google Places API 来在我的网站中创建地址自动完成功能。我的问题是使用 Google 地方信息是否可以满足我的要求。
我有一个“发布请求”页面,用户可以在其中发布地址(城市、街道和门牌号)。我还有一个“搜索”页面,用户可以在其中根据城市搜索帖子。这里用户只插入城市名称,没有街道和门牌号。
我的问题:
换句话说,假设我有一个代表城市的位置 id 和代表完整地址(城市、街道、门牌号)的其他位置 id,我如何仅使用 id 来检查完整地址是否属于该城市?
最佳答案
至于用户在与 Autocomplete
关联的输入框中键入的内容dev-guide ,您无法控制他们输入的内容。但是,当您设置 Autocomplete
时api-doc ,您可以定义控制返回结果的选项。您的关键是设置 types
选项正确。
针对您的问题 #1 ,您可以限制将在 Autocomplete
中返回的结果通过设置 types
到地址至 geocode
如本例所示:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-33.8902, 151.1759),
new google.maps.LatLng(-33.8474, 151.2631));
var input = document.getElementById('searchTextField');
var options = {
bounds: defaultBounds,
types: ['geocode']
};
autocomplete = new google.maps.places.Autocomplete(input, options);
针对您的问题 #2 ,您可以限制在
Autocomplete
中返回的结果通过设置进入城市 types
至 cities
如图所示:var input = document.getElementById('searchTextField');
var options = {
types: ['(cities)'],
componentRestrictions: {country: 'fr'}
};
autocomplete = new google.maps.places.Autocomplete(input, options);
还要注意,因为
Autocomplete
已被限制为 (cities)
, 我加了一个 componentRestrictions
说明符设置搜索城市的国家(在本例中为法国)并删除 bounds
说明符。针对您的问题 #3 ,可以创建两张表,一张用来存放城市 数据,其他存储地址 数据,如下图所示:
根据您问题中的描述,此设计有一些关键方面:
City
的一对多关系至 Address
.这将允许您关联许多 Address
记录到单个 City
记录。它还将使检索所有 Address
变得简单。已为任何 City
输入的记录. Address
之间的关系和 City
说对于每个 Address
, City
必须存在。这意味着当用户输入 Address
,您必须采取以下措施: 1 - 检查 City
为 Address
已经存在于数据库中。 2 - 如果 City
确实存在,检索其 ID
并将其用作外键 City-ID
存储新 Address
时的值. 3 - 如果 City
不存在,新的唯一ID
必须为 City
创建和 City
必须存储在数据库中。然后是ID
为 City
可以用作外键 City-ID
存储 Address
时的值.确保每个 Address
有一个关联的 City
回答您在问题 #3 中提出的问题之一:如何使用“MyCity”键找到第一个用户的结果:“MyCity, MyStreet 12”? 因为当您存储“MyCity, MyStreet 12”时Adress
记录,您确保 City
中存在“MyCity”记录 table 。检索 ID
为 City
如果另一个用户输入相同的 City
则很简单或 Address
与相同的 City
相关联由用户将来输入。 City
之间的关系和 Address
说对于任何 City
可能有零个或多个关联 Address
记录。这可确保您描述中的用户只搜索 City
可以存储 City
即使没有后续 Address
进行搜索。 City
被存储,它有一个 ID
,它只是在等待任何新的 Address
以后可能会添加的记录。 最后,作为问题 3 的一部分,您又问了一个问题:如何仅使用 ID 检查完整地址是否属于该城市? 能够回答这个问题就是为什么会有外键
City-ID
这是每个 Address
的一部分记录。它清楚地定义了 City
与任何 Address
相关联的.所以如果你有 ID
对于 City
和 ID
对于 Address
,确定它们是否匹配的最简单方法是: 1 - 检索 Address
从数据库使用 Address
ID
. 2 - 比较 City-ID
值是 Address
的一部分这是刚刚从数据库中检索到的 ID
为 City
你开始了;如果它们匹配,您就知道 Address
与 City
相关联如果它们不匹配,您可以确定 Address
之间没有任何关系。还有那个City
.我不完全确定您要通过地址和城市实现什么目标,但我已尝试为您提供一个可靠的解决方案,其中涵盖了您在问题中描述的内容。我包含了很多细节,以便解决您的所有观点,并希望它能使我的描述清晰易懂。我希望这可以帮助你 -
关于javascript - Google Places API - 使用城市查找地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463286/