开发者

google geo coding with json and php

My php file:

<?php

 if (isset($_POST['query'])) {  
    $query = $_POST['query'];

$url='http://maps.googleapis.com/maps/api/geocode/json?address=';
$callback="&callback=?";
$sensor='&sensor=false';
$result= $url.$query.$sensor.$callback;
curl_init ($result);

 }
?>

My html file:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){


    // when the user clicks the button
    $("button").click(function(){


          $.getJSON("geo.php",function(json){

             $('#results').append('<p>Latitude : ' + json.results[9].geometry.location.lat+ '</p>');
             $('#results').append('<p>Longitude: ' + json.results[9].geometry.location.lng+ '</p>');

});

          // get the json file
    });
});


</script>

</head>
<body>

<input type="text" id="query" /><button>Get Coordinates</button>
<div id="results"></div>

</body>
</html>

I get this error when i used firbug:

json is null
$('#results').append('<p>...s[9].geometry.location.lat+ '</p>'); 

Google's json response:

{
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
    "address_components": [ {
      "long_name": "1600",
      "short_name": "1600",
      "types": [ "street_number" ]
    }, {
      "long_name": "Amphitheatre Pkwy",
      "short_name": "Amphitheatre Pkwy",
      "types": [ "route" ]
    }, {
      "long_name": "Mountain View",
      "short_name": "Mountain View",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "California",
      "short_name": "CA",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "United States",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "94043",
      "short_name": "94043",
      "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 37.4219720,
        "lng": -122.0841430
      },
      "location_type": "ROOFTOP",
      "viewport": {
        "southwest": {
          "lat": 37.4188244,
          "lng": -122.0872906
        },
        "northeast": {
          "lat": 37.4251196,
          "lng": -122.0809954
        }
      }
    }
  } ]
}

EDITED:

<?php
if (isset($_POST['query'])) {  
    $query = $_POST['query'];
$url='http://maps.googleapis.com/maps/api/ge开发者_如何学运维ocode/json?address=';
$callback="&callback=?";
$sensor='&sensor=false';
$result= $url.$query.$sensor.$callback;
$resp = file_get_contents($result);
                header('Cache-Control: no-cache, must-revalidate');
                header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
                header('Content-type: application/json');
echo $resp;
}


You're not outputting anything from the PHP. The PHP script has to output JSON for getJSON to be able to receive it.

Have a look at curl_init. I think you want to be doing this:

$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $result);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);


Are you sure you are capturing the result?

I'm assuming this: Your PHP code is called via Ajax from the html. So basically you are constructing the URL for the query and using CURL to fetch the json result. It seems you are not actually capturing or returning the results to the ajax call You might want to do this:


            $process = curl_init($url); 
//init curl connection
            curl_setopt($process, CURLOPT_HEADER, 0); 

              curl_setopt($process, CURLOPT_POST, 1); 

            curl_setopt($process, CURLOPT_RETURNTRANSFER,1);

            curl_setopt($process,CURLOPT_CONNECTTIMEOUT,1);

            $resp = curl_exec($process); 
//your content
            curl_close($process); 
//$resp contains your response
                header('Cache-Control: no-cache, must-revalidate');
                header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
                header('Content-type: application/json');
echo $resp;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜