至于用户在与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数据,如下UML图所示:
根据您问题中的描述,此设计有一些关键方面:
City
从到有一对多的关系Address
。这将允许您将许多Address
记录关联到单个City
记录。它还将使检索Address
任何已输入的所有记录变得简单City
。
Address
和之间的关系City
表明对于每个 Address
, aCity
必须存在。这意味着当用户输入 时Address
,您必须采取以下措施: 1 - 检查数据库中是否City
已经Address
存在。2 - 如果City
确实存在,则在存储新的 时检索其ID
并将其用作外键值。3 - 如果不存在,则必须为该创建一个新的唯一性,并且必须将其存储在数据库中。那么在存储. _ 确保每个人都有相关的City-ID
Address
City
ID
City
City
ID
City
City-ID
Address
Address
City
回答您在问题 #3 中提出的一个问题:如何使用“MyCity”键找到第一个用户的结果:“MyCity, MyStreet 12”?因为当您存储“MyCity, MyStreet 12”Adress
记录时,您确保表中存在“MyCity”记录City
。如果另一个用户输入相同的或与相同的关联的用户将来输入的,则检索ID
for很简单。City
City
Address
City
City
和之间的关系Address
表示,对于任何City
可能有零个或多个关联Address
记录。这确保了即使没有进行后续搜索,您描述中仅搜索 a 的用户City
也可以存储。被存储,它有一个,它只是在等待以后可能添加的任何新记录。City
Address
City
ID
Address
最后,作为问题 #3 的一部分,您又问了一个问题:如何仅使用 id 来检查完整地址是否属于城市?能够回答这个问题就是为什么City-ID
每条Address
记录都有一个外键。它清楚地定义了City
与 any 相关联的Address
。因此,如果您有ID
for aCity
和ID
for an Address
,确定它们是否匹配的最简单方法是: 1 -使用 .Address
从数据库中检索Address
ID
. 2 - 将刚刚从数据库中检索到的值与您开始使用的City-ID
值进行比较;如果它们匹配,您就知道与Address
ID
City
Address
City
如果它们不匹配,您可以确定 thatAddress
和 that之间没有关系City
。
我不完全确定您要通过地址和城市实现什么目标,但我已尝试为您提供一个可靠的解决方案,涵盖您在问题中描述的内容。我包含了很多细节,以便您的所有观点都得到解决,并希望它能使我的描述清晰易懂。我希望这可以帮助你 -