Nao*_*aor 7 javascript google-maps google-places-api
我打算使用Google Places API在我的网站上创建地址自动填充功能.我的问题是我的要求是否可以使用Google商家信息.
我有一个"发布请求"页面,用户在该页面上发布地址(城市,街道和门牌号码).我还有一个"搜索"页面,用户可以根据城市搜索帖子.在这里,用户只插入城市名称,没有街道和门牌号码.
我的问题:
我可以强制用户插入城市,街道和门牌号码(仅插入城市或仅插入城市和街道会提醒无效输入,或者自动完成仅返回城市,街道和门牌号码的结果)?
我可以强制用户仅插入城市(没有街道和门牌号码)吗?
假设用户使用"MyCity,MyStreet 12"发布地址.在应用程序的后台,我得到了这个特定位置的id并存储它.另一个用户正在搜索帖子并插入"MyCity".在后台我得到了"MyCity"的具体ID,并使用此id来搜索我的数据库.如何找到第一个用户的结果:"MyCity,MyStreet 12"使用"MyCity"键?
换句话说,假设我有一个代表城市的位置ID和代表完整地址(城市,街道,门牌号码)的其他位置ID,如何仅使用ID检查完整地址是否属于城市?
Sea*_*key 10
至于用户键入与Autocomplete
开发指南相关联的输入框中的内容,您无法控制他们键入的内容.但是,在设置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);
Run Code Online (Sandbox Code Playgroud)
具体到你的问题#2,你可以限制回来的结果Autocomplete
通过设置到城市types
来cities
,如下所示:
var input = document.getElementById('searchTextField');
var options = {
types: ['(cities)'],
componentRestrictions: {country: 'fr'}
};
autocomplete = new google.maps.places.Autocomplete(input, options);
Run Code Online (Sandbox Code Playgroud)
还要注意,因为Autocomplete
已被限制(cities)
,我添加了一个componentRestrictions
说明符来设置搜索城市的国家(在本例中为法国)并删除了bounds
说明符.
特定于您的问题#3,您可以创建两个表,一个用于存储City数据,另一个用于存储Address数据,如下面的UML图所示:
根据您问题中的描述,此设计有一些关键方面:
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
for City
用作City-ID
存储时的外键值Address
.确保每个Address
都有一个相关的City
答案你问的一个问题是问题#3的一部分:如何找到第一个用户的结果:"MyCity,MyStreet 12"使用"MyCity"键?因为当您存储"MyCity,MyStreet 12" Adress
记录时,您确保City
表中存在"MyCity"记录.检索ID
用于City
如果另一个用户输入相同是直接的City
或Address
具有相同的相关联City
是通过在未来用户输入.City
和之间的关系Address
表示,对于任何City
可能存在零个或多个相关Address
记录.这可以确保即使没有进行后续搜索,您的描述中仅搜索a的用户City
也可以存储.该存储,它有一个,它只是在等待任何新的以后可能添加的记录.City
Address
City
ID
Address
最后,您问了另一个问题作为问题#3的一部分:如何仅使用ID检查完整地址是否属于城市?能够回答这个问题是为什么有一个外键City-ID
是每个Address
记录的一部分.它清楚地定义了City
与任何相关的Address
.因此,如果您有ID
for City
和ID
for Address
,则确定它们是否匹配的最简单方法是:1 - Address
使用Address
ID
.从数据库中检索.2 -比较的City-ID
是部分值Address
刚被从数据库中检索与ID
在City
您开始使用; 如果他们匹配,你知道Address
与相关联的City
,如果他们不匹配,你可以肯定的是,没有任何关系Address
和City
.
我不完全确定你想要通过地址和城市实现什么,但我试图给你一个可靠的解决方案,涵盖你在问题中描述的内容.我提供了大量细节,以便解决您的所有要点,并希望它能使我的描述清晰易懂.我希望这可以帮助你 -