我打算使用谷歌API的地方,以创造在我的网站地址自动完成。 我的问题是关于我的要求是否可以使用谷歌的地方。
我有一个“POST请求”页面,在这里用户帖子的地址(城市,街道和门牌号码)。 我也有一个“搜索”页面,用户可以根据城市搜索帖子。 在这里,用户只需插入一个城市名称,没有街道和门牌号码。
我的问题:
我可以强制用户插入一个城市,街道和门牌号码(仅适用于例如城市或唯一的城市和街道的插入会提醒无效的输入,或自动完成将返回城市,街道和门牌号码的唯一结果)?
我可以强制用户接入城市只有(不包括街道和门牌号码)?
假设用户的职位以“MyCity,MyStreet 12”的地址。 在应用的背景下,我得到这个特定位置的标识和存储。 另一个用户正在搜索的职位和插入“MyCity”。 在此背景下,我得到“MyCity”的特殊标识,并使用这个号码,以便在我的数据库中进行搜索。 我怎样才能找到的第一个用户的结果是:“MyCity,MyStreet 12”使用“MyCity”键?
换句话说,假设我有一个代表着一个城市和其他地点标识,表示完全解决(城市,街道,门牌号),地点ID,我怎么能检查是否完全属于地址只能使用IDS的城市?
至于什么类型的用户到与相关的输入框Autocomplete
开发导向 ,没有很多可以做,以控制他们键入的内容。 但是,当您设置Autocomplete
API的文档 ,你可以定义控制将回来的结果选项。 为你的密钥将设立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,你可以创建两个表,一个用于存储数据的城市 ,其他的存储地址数据,显示在下面的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
为City
可以用作外键City-ID
存储在值Address
。 确保每个Address
都有相关的City
回答了你问你的问题#3的一部分,其中一个问题: 我如何才能找到的第一个用户的结果是:使用“MyCity”钥匙“MyCity,MyStreet 12”? 因为当你保存的“MyCity,MyStreet 12” Adress
记录,你确信一个“MyCity”记录中存在的City
表。 检索ID
为City
如果另一个用户输入相同是直截了当的City
或Address
与同一相关联的City
是通过在将来用户输入。 - 之间的关系,
City
和Address
说,对任何City
有可能是零个或多个相关联的Address
记录。 这保证了在你的描述,搜索只是一个用户City
可以存储City
,即使没有后续的Address
搜索发生。 该City
被保存,它有一个ID
,它只是在等待任何新的Address
以后可能添加的记录。
最后,你问的问题的第3部分一个问题: 我怎么能检查是否完全属于只使用IDS城市解决? 能回答这个问题就是为什么有一个外键City-ID
是每个部分Address
记录。 它明确规定了City
是与任何相关的Address
。 所以,如果你有ID
为City
和ID
为一个Address
,最简单的方法,以确定它们是否匹配是:1 -检索Address
使用该数据库中Address
ID
。 2 -比较的City-ID
值,是部分Address
刚从与数据库中检索ID
为City
您开始使用; 如果他们匹配,你知道Address
与相关的City
,如果他们不匹配,你可以肯定的是,没有关系Address
和City
。
我不完全知道你正在努力实现与地址和城市是什么,但我想给你覆盖你在你的问题来描述的东西了坚实的解决方案。 我详细包括了大量的使你的所有点都解决,并希望它会让我的描述明确,容易理解。 我希望这可以帮助你 -
这比谷歌的地方一个JavaScript的问题。
使用JavaScript程序来验证表单,并且,说万一#1,检查所有字段填写。 在另一方面,情形#2,您可以禁用/删除您不想填写的领域,你想送什么只发布请求。
对于#3,它只是一个缓存的问题。 使用本地存储,或阵列,存储城为重点,并把结果作为值。
谷歌的地方将帮助你的用户自动完成他们的地址肖恩米奇描述:
- 他们开始在一个字段中键入自己的街道地址。
- 谷歌让他们的可能匹配的地址的列表
- 他们选一个,你会得到一个回应这样的
该id
在响应将是对他们的街道地址,而不是城市。 所以,这不会是有用的,你想要的方式。 如果你想匹配的城市,你需要存储的城市名称 (如果你愿意,你可以创建自己的ID表)。
想想你要如何实现您的数据库位置搜索:
- 按城市搜索(想念谁只是生活在城市范围以外的人)
- 按距离搜索(发现一定范围内每个人)
如果选择按距离搜索,你也应存储的纬度和经度,当用户输入自己的地址,谷歌的地方给你。 您还需要如何做阅读了空间搜索数据库中(尤其是geodist)。