从谷歌地图读取json文件放置api(使用javascript或php)

时间:2011-08-13 11:46:20

标签: php javascript jquery json

我正在构建一个应用程序,我试图获取给定纬度和长度附近的位置列表。

我有一个api密钥并在我的浏览器url上输入这个,并给我一个带有位置数据的json文件。

https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I

但是当我尝试获取并解析它时,虽然j查询它没有给我任何东西。

$(document).ready(function(){
$.getJSON('https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I',
 function(data) {
  alert(data);
});

我在堆栈溢出时发现了以下问题,但是他们找到了答案。

parse google place json with javascript

How do I use Google Places to get an array of Place names?

修改

我试图通过

获取文件的内容
echo file_get_contents("https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I");

并使用php获取文件内容。

但有没有办法用jquery或javascript解析它?

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

不允许使用ajax(直接)跨域请求。我试过了:

echo file_get_contents("https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I");

它适用于我(wamp 2.0 openssl已启用)。

如果您成功完成此操作,则可以使用同一域中页面上的ajax脚本获取内容。

编辑:

这个想法是对你的php页面进行ajax调用,php页面从de google api获取数据并返回它。 jquery自动解析json:)

代码:

$.ajax({
  url: 'url_to_your_php',
  data: {
    location:'-33.8670522,151.1957362',
    radius:500,
    sensor:false,
    key:'AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I'},
  dataType: "json"
  type: "GET", //or POST if you want => update your php in that case
  success: function( data ) {
    for(var i in data.results){
       doSomthingWithYourLocation(data.results[i]);
    }
  },
  error: function (request, status, error) {
    //handle errors
  }
});

你的php应该做这样的事情:

<?php 
    header('Content-type: application/json');
    echo file_get_contents("https://maps.googleapis.com/maps/api/place/search/json?" .
      "location=-" . $_GET['location'] .
      "&radius=" . $_GET['radius'] .
      "&sensor=" . $_GET['sensor'] .
      "&key=" .$_GET['key']);
?>

最好检查php文件中的输入,但这应该有用。

答案 1 :(得分:2)

从一个域加载的脚本无法向另一个域发出ajax请求。使用Google Maps JavaScript API加载您的数据。

答案 2 :(得分:2)

可以在此处访问地点javascript API:http://code.google.com/apis/maps/documentation/javascript/places.html

答案 3 :(得分:1)

您可以通过以下方式解析对象数据:

$(document).ready(function(){
    $.getJSON('https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyAImBQiqvaXOQtqeK8VC-9I96kMmB6Mz7I', function(data) {
        $.each(data, function(index,place) {
            alert(place.name);
        });
    });
});

希望它有所帮助。