我正在使用google maps API处理我正在处理的项目,该项目要求用户输入城镇,城市或邮政编码等地址。
我已经准备好使用谷歌的结果了。我面临的问题是,如果一个城镇出现在该国的多个地方。例如,阿什福德(在英国)他的一个小镇位于米德尔塞克斯和肯特郡。
我如何让用户选择他们的意思?我有信心生成一个选择表单,但如果可能的话,我需要一种方法来使用PHP函数来获得2个独立的县。正如您从代码段中看到的那样,没有任何关键可以将两个结果分开。
请注意,我正在使用PHP。
以下是google给我回复的结果:
object(stdClass)#5519 (2) {
["results"]=>
array(2) {
[0]=>
object(stdClass)#5541 (5) {
["address_components"]=>
array(5) {
[0]=>
object(stdClass)#5546 (3) {
["long_name"]=>
string(7) "Ashford"
["short_name"]=>
string(7) "Ashford"
["types"]=>
array(2) {
[0]=>
string(8) "locality"
[1]=>
string(9) "political"
}
}
[1]=>
object(stdClass)#5545 (3) {
["long_name"]=>
string(7) "Ashford"
["short_name"]=>
string(7) "Ashford"
["types"]=>
array(1) {
[0]=>
string(11) "postal_town"
}
}
[2]=>
object(stdClass)#5544 (3) {
["long_name"]=>
string(4) "Kent"
["short_name"]=>
string(4) "Kent"
["types"]=>
array(2) {
[0]=>
string(27) "administrative_area_level_2"
[1]=>
string(9) "political"
}
}
[3]=>
object(stdClass)#5543 (3) {
["long_name"]=>
string(7) "England"
["short_name"]=>
string(7) "England"
["types"]=>
array(2) {
[0]=>
string(27) "administrative_area_level_1"
[1]=>
string(9) "political"
}
}
[4]=>
object(stdClass)#5542 (3) {
["long_name"]=>
string(14) "United Kingdom"
["short_name"]=>
string(2) "GB"
["types"]=>
array(2) {
[0]=>
string(7) "country"
[1]=>
string(9) "political"
}
}
}
["formatted_address"]=>
string(11) "Ashford, UK"
["geometry"]=>
object(stdClass)#5537 (4) {
["bounds"]=>
object(stdClass)#5539 (2) {
["northeast"]=>
object(stdClass)#5540 (2) {
["lat"]=>
float(51.1841519)
["lng"]=>
float(0.914884)
}
["southwest"]=>
object(stdClass)#5538 (2) {
["lat"]=>
float(51.1228136)
["lng"]=>
float(0.8276781)
}
}
["location"]=>
object(stdClass)#5536 (2) {
["lat"]=>
float(51.1464659)
["lng"]=>
float(0.875019)
}
["location_type"]=>
string(11) "APPROXIMATE"
["viewport"]=>
object(stdClass)#5534 (2) {
["northeast"]=>
object(stdClass)#5535 (2) {
["lat"]=>
float(51.1841519)
["lng"]=>
float(0.914884)
}
["southwest"]=>
object(stdClass)#5533 (2) {
["lat"]=>
float(51.1228136)
["lng"]=>
float(0.8276781)
}
}
}
["place_id"]=>
string(27) "ChIJh_M23CLD3kcRHsaOYTRPDSg"
["types"]=>
array(2) {
[0]=>
string(8) "locality"
[1]=>
string(9) "political"
}
}
[1]=>
object(stdClass)#5528 (5) {
["address_components"]=>
array(4) {
[0]=>
object(stdClass)#5532 (3) {
["long_name"]=>
string(7) "Ashford"
["short_name"]=>
string(7) "Ashford"
["types"]=>
array(2) {
[0]=>
string(8) "locality"
[1]=>
string(9) "political"
}
}
[1]=>
object(stdClass)#5531 (3) {
["long_name"]=>
string(6) "Surrey"
["short_name"]=>
string(6) "Surrey"
["types"]=>
array(2) {
[0]=>
string(27) "administrative_area_level_2"
[1]=>
string(9) "political"
}
}
[2]=>
object(stdClass)#5530 (3) {
["long_name"]=>
string(7) "England"
["short_name"]=>
string(7) "England"
["types"]=>
array(2) {
[0]=>
string(27) "administrative_area_level_1"
[1]=>
string(9) "political"
}
}
[3]=>
object(stdClass)#5529 (3) {
["long_name"]=>
string(14) "United Kingdom"
["short_name"]=>
string(2) "GB"
["types"]=>
array(2) {
[0]=>
string(7) "country"
[1]=>
string(9) "political"
}
}
}
["formatted_address"]=>
string(11) "Ashford, UK"
["geometry"]=>
object(stdClass)#5524 (4) {
["bounds"]=>
object(stdClass)#5526 (2) {
["northeast"]=>
object(stdClass)#5527 (2) {
["lat"]=>
float(51.4399966)
["lng"]=>
float(-0.4279375)
}
["southwest"]=>
object(stdClass)#5525 (2) {
["lat"]=>
float(51.4208625)
["lng"]=>
float(-0.4913756)
}
}
["location"]=>
object(stdClass)#5523 (2) {
["lat"]=>
float(51.4274516)
["lng"]=>
float(-0.4552643)
}
["location_type"]=>
string(11) "APPROXIMATE"
["viewport"]=>
object(stdClass)#5521 (2) {
["northeast"]=>
object(stdClass)#5522 (2) {
["lat"]=>
float(51.4399966)
["lng"]=>
float(-0.4279375)
}
["southwest"]=>
object(stdClass)#5520 (2) {
["lat"]=>
float(51.4208625)
["lng"]=>
float(-0.4913756)
}
}
}
["place_id"]=>
string(27) "ChIJY_intExxdkgRVdGnlWdcKVw"
["types"]=>
array(2) {
[0]=>
string(8) "locality"
[1]=>
string(9) "political"
}
}
}
["status"]=>
string(2) "OK"
}
非常感谢任何帮助。
答案 0 :(得分:1)
正如您从代码段中看到的那样,没有关键可以将两个结果分开。
我遗漏了一些东西:为什么你无法访问(伪代码)document.getElementById("btnPrint").onclick = function() {
window.print();
}
?
这是将两个结果分开的关键:在一个记录中它是Surrey,在另一个记录中它是肯特。
更新:错误。键号不同。
我很糟糕,但实际上工作的是找到所有["results"]["address_components"][2]["long_name"]
,其中i,b是response.results[0].address_components[i].short_name
。见this excellent answer (for a response that is GeoJSON, but can be amended appropriately)。
忏悔:我没有明确规定引用相关密钥的方式的原因是每次我必须从一组结果中解析出类似的东西我就是kludge通过它的方式,忘记每次我最后一次如何做到("永远不要记住你可以查找的内容",爱因斯坦说)。如果它是XML则会更容易。
萨里或肯特可能有两个城镇的名称相同,无法根据空间数据区分它们 - 但示例数据并非如此。
忏悔II :当我第一次回答时,我已经键入了'在response.results[0].address_components[i].types[b] == "administrative_area_level_2"
上作为区分的正确基础,并扫描回来找到相关节点 - 但只查看了第二条记录。我的坏。