我有一个试图从json数组获取坐标的函数。我很难过,所以我希望有人会看到我的错误。
function getCoords($location){
$loc = urlencode($location);
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=$loc&sensor=false";
//echo $url;
//echo file_get_contents($geo_url);
$json_result = json_decode(file_get_contents($url));
$geo_result = $json_result->results[0];
$aCsv = $geo_result->geometry->location;
//see if the it is locating the real address or just apox location, or in most cases a bad address
if($aCsv->location[0] == 200) {
return array('lat'=>(float)$aCsv[2], 'lng'=>(float)$aCsv[3], 'prec'=>(int)$aCsv[1]);
}
var_dump($aCsv);
}
var转储在下面我需要以这种格式提取lat和lng 42.3584308,-71.0597732,21.3069444,-157.8583333
object(stdClass)#12 (2) { ["lat"]=> float(42.3584308) ["lng"]=> float(-71.0597732) } object(stdClass)#6 (2) { ["lat"]=> float(21.3069444) ["lng"]=> float(-157.8583333) }
我认为这部分是我遇到问题的地方
if($aCsv->location[0] == 200) {
return array('lat'=>(float)$aCsv[2], 'lng'=>(float)$aCsv[3], 'prec'=>(int)$aCsv[1]);
TIA史蒂夫
有没有办法在函数外部访问JSON数据?我想获取正在解析的实际地址,并在结果计算中显示。
有时谷歌地图不会使用确切的位置,例如我输入KLAX - 洛杉矶机场如果在德国使用地址但是如果我把LAX用于洛杉矶机场那么很高兴看到解析后的地址为好。
我可以回显函数中正在解析的地址,但是当我尝试在函数外部使用它时,它是NULL。 再次感谢你的帮助。 史蒂夫
答案 0 :(得分:0)
试试这个
$data = json_decode($ResponseData);
if('OK' === $data->status){
$latitude = $data->results['0']->geometry->location->lat;
$longitude = $data->results['0']->geometry->location->lng;
}
答案 1 :(得分:0)
使用assoziative数组更容易,因此您可以使用它:
$json_result = json_decode(file_get_contents($url),true)
(http://php.net/manual/de/function.json-decode.php)
然后可以使用以下值:
$json_result["lng"]
等
答案 2 :(得分:0)
树木和树林? 你已经拥有它 !!
function getCoords($location){
$loc = urlencode($location);
$url = "https://maps.googleapis.com/maps/api/geocode/json?address=$loc&sensor=false";
$json_result = json_decode(file_get_contents($url));
$geo_result = $json_result->results[0];
$aCsv = $geo_result->geometry->location;
echo 'lat : '.$aCsv->lat.'<br>';
echo 'lng : '.$aCsv->lng.'<br>';
}
getCoords('alabama');
输出
lat:32.3182314
lng:-86.902298
答案 3 :(得分:0)
使用此
$geocode = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.$loc.'&sensor=true');
$output = json_decode($geocode);
if($output->results)
{
foreach($output as $data)
{
$lat = $data[0]->geometry->location->lat;
$long = $data[0]->geometry->location->lng;
$location = $data[0]->formatted_address;
}
}