Я использую API-интерфейс google для проекта, над которым я работаю, для этого требуется, чтобы пользователь вводил адрес, такой как город, город или почтовый индекс.Выбор одного адреса из Google Maps api с несколькими результатами
У меня есть результаты из Google готовы к использованию. Проблема, с которой я сталкиваюсь, заключается в том, что если город появляется в разных местах страны. Например, Эшфорд (в Великобритании) его город, расположенный в Миддлсексе и в Кенте.
Как я могу заставить пользователя выбрать, что они имели в виду? Я уверен в создании выбранной формы, но мне нужен способ, если это возможно, используя функции 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"
}
Любая помощь очень ценится.
Поскольку ключ [2] не выравнивается для обоих результатов. Один из них - ключ 2, другой - ключ 1. –
Правда (проклятие моих глупых старых глаз) ... однако вы можете найти тег, у которого был ребенок = "Administrative_area_level_2" - найти все «response.results [0] .address_components [ i] .short_name' где 'i, b' st 'response.results [0] .address_components [i] .types [b] ==" Administrative_area_level_2 "'. См. Этот ответ (для «ответа», который является GeoJSON, но может быть изменен соответствующим образом): http://stackoverflow.com/a/6773743/209219 - обновил мой ответ соответствующим образом –
Я пытался сделать что-то подобное раньше с помощью " array_search ", но он найдет только ключ, принадлежащий этой записи, который, конечно, [0]. Этот ответ прекрасен! Большое спасибо! Серьезно оценили. –