【问题标题】:Reading the json file from google maps places api (with javascript or php)从 google maps 地方 api 读取 json 文件(使用 javascript 或 php)
【发布时间】:2011-10-26 09:14:34
【问题描述】:

我正在构建一个应用程序,我试图在其中获取靠近给定纬度和经度的地点列表。

我有一个 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?

编辑:

我试图通过

使用 php 获取文件的内容
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 来解析这个?

感谢您的帮助。

【问题讨论】:

  • 检查您的 WAMP 发行版的更新。常见的有 HTTPS 可用。你用的是哪一个?
  • 相关:How to enable HTTPS stream wrappers(WAMP 也是)
  • 在我的 windows 框中,使用 HTTPS 流包装器 (PHP 5.3.6) 可从 php.net 获得的默认 PHP 没有问题。 wrapper 至少需要启用 openssl 扩展。检查该扩展程序是否可用并成功加载。
  • 我已经在我的 php.ini 中更改了行 extension=php_openssl.dll .... 还尝试运行 但这在列表中没有给出“https”..
  • 不仅取消注释该行,还请检查 openssl 扩展是否实际加载,例如cmd:php -m 或执行phpinfo()

标签: php javascript jquery json


【解决方案1】:

不允许使用 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 文件中的输入,但这应该可以。

【讨论】:

  • 是的.. 但是打开的 ssl 也没有被加载.. 我取消了 php.ini 行的注释。还有什么事情要做。或者我应该重新安装wamp。如何在启用 open ssl 的情况下安装?
【解决方案2】:

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

【讨论】:

  • 我尝试了以下链接中的代码code.google.com/apis/maps/documentation/javascript/places.html ..in Place Search Requests 在哪里可以找到附近的地方,我们需要先启动地图。 '服务 = 新的 google.maps.places.PlacesService(map);服务.搜索(请求,回调);' ..可以将其转换为无需启动地图的请求。
  • 我很确定这是不可能的。 Maps API 的想法是使用 Maps,而不是从 Google 获取免费信息。顺便说一句,服务条款 (code.google.com/intl/fr-FR/apis/maps/terms.html) 说:“您不得在没有相应 Google 地图的情况下使用或显示内容,除非 Maps API 文档明确允许您这样做”。通过 PHP 访问 API 违反了 TOS。
  • 但是我得到的数据是我在问题中给出的文件 url。我的问题是通过 php 或 javascript 解析它。
【解决方案3】:

可以在这里访问 javascript API 的地方:http://code.google.com/apis/maps/documentation/javascript/places.html

【讨论】:

    【解决方案4】:

    你可以这样解析你的对象数据:

    $(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);
            });
        });
    });
    

    希望对你有帮助。

    【讨论】:

    • 它对你有用吗?我认为由于同源政策,它不会起作用。让我检查一下。 :)
    猜你喜欢
    • 2012-04-15
    • 2012-11-20
    • 2011-07-28
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 2016-02-22
    • 2013-03-22
    相关资源
    最近更新 更多