an array of user addresses
array:5 [▼
0 => array:2 [▼
"name" => " Admin"
"address" => "111 Park AveFloor 4 New York, NY"
]
1 => array:2 [▼
"name" => "User A"
"address" => "12 Main Street Cambridge, MA"
]
2 => array:2 [▼
"name" => "Apple HQ"
"address" => "1 Infinite Loop Cupertino, California"
]
3 => array:2 [▼
"name" => "Google MA"
"address" => "355 Main St Cambridge, MA"
]
4 => array:2 [▼
"name" => "site HQ"
"address" => "300 Concord Road Billerica, MA "
]
]
is to grab the lat
, and lng
of each address, and construct something like this
[
["Admin", 18.3114513, -66.9219513, 0],
["User A", 25.3253982, 44.5503772, 1],
["Apple HQ", 33.0241101, 39.5865834, 2],
["Google MA", 43.9315743, 20.2366877, 3],
["site HQ", 32.683063, 35.27481, 4]
]
so I can plot them in Google Map.
making a curl to
https://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&key=***
$data = shell_exec('curl '.$url);
this back as a response, after decode it
$data = json_decode($data);
{#278 ▼
+"results": array:1 [▼
0 => {#298 ▼
+"address_components": array:2 [▶]
+"formatted_address": "PR-111, Puerto Rico"
+"geometry": {#300 ▼
+"bounds": {#301 ▶}
+"location": {#304 ▼
+"lat": 18.3114513
+"lng": -66.9219513
}
+"location_type": "GEOMETRIC_CENTER"
+"viewport": {#305 ▶}
}
+"place_id": "ChIJrdMXucS4AowRF4jHu2ji58U"
+"types": array:1 [▶]
}
]
+"status": "OK"
}
As you can see, now I can access the lat,lng by accessing
$location = $data->results[0]->geometry->location;
You might say, if you can access to it - why are you still asking this question ?
Well, that lat,lng data that I'm getting back from the API response produce wrong Google Map Marker.
I'm not sure why/how it is wrong, but I am sure that all my user addresses are in the US, and here is my Google Map Marker Result. None of them showing inside the US.
I'm running out of ideas now.
Any hints / helps / suggestions will mean a lot to me.
Thanks to this answer
I be able to get the lat,lng and plot correct markers on my Google Map now.
You should url-encode your address before you pass it to curl.
urlencode($address);
The spaces in the addresses if not encoded can cause unpredictable problems.
Here is an example of what happens:
Without url encoding:
curl https://maps.googleapis.com/maps/api/geocode/json?address=111 Park AveFloor 4 New York, NY
{
"results" : [
{
"address_components" : [
{
"long_name" : "111",
"short_name" : "PR-111",
"types" : [ "route" ]
},
{
"long_name" : "Puerto Rico",
"short_name" : "PR",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "PR-111, Puerto Rico",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 18.4485405,
"lng" : -66.6643718
},
"southwest" : {
"lat" : 18.2420721,
"lng" : -67.15701799999999
}
},
"location" : {
"lat" : 18.3114513,
"lng" : -66.9219513
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 18.4485405,
"lng" : -66.6643718
},
"southwest" : {
"lat" : 18.2420721,
"lng" : -67.15701799999999
}
}
},
"place_id" : "ChIJrdMXucS4AowRF4jHu2ji58U",
"types" : [ "route" ]
}
],
"status" : "OK"
}
With url encoding:
curl https://maps.googleapis.com/maps/api/geocode/json?address=111+Park+AveFloor+4+New+York%2C+NY
{
"results" : [
{
"address_components" : [
{
"long_name" : "111",
"short_name" : "111",
"types" : [ "street_number" ]
},
{
"long_name" : "Park Avenue",
"short_name" : "Park Ave",
"types" : [ "route" ]
},
{
"long_name" : "Midtown East",
"short_name" : "Midtown East",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Manhattan",
"short_name" : "Manhattan",
"types" : [ "sublocality_level_1", "sublocality", "political" ]
},
{
"long_name" : "New York",
"short_name" : "New York",
"types" : [ "locality", "political" ]
},
{
"long_name" : "New York County",
"short_name" : "New York County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "10170",
"short_name" : "10170",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "111 Park Ave, New York, NY 10170, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 40.7522096,
"lng" : -73.9773591
},
"southwest" : {
"lat" : 40.7521971,
"lng" : -73.97736809999999
}
},
"location" : {
"lat" : 40.7521971,
"lng" : -73.97736809999999
}...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With