使用Google商家信息进行批处理:是否可能?

时间:2014-01-20 23:57:03

标签: google-maps-api-3 google-places-api google-api-client

我想知道是否可以将批量请求发送到maps.googleapis.com。据我所知,事实并非如此。

我使用支持批处理的Google API Client Library,但它只适用于www.googleapis.com。我继续攻击它,以便我可以调用Places API,它可以正常调用,但是当我真正尝试批处理时,我收到了404错误:

“在此服务器上找不到请求的网址/batch。这就是我们所知道的。”

所以看来maps.googleapis.com不支持批处理,但我想确定这是真的。如果有人不知道,请告诉我如何。谢谢!

google-api-php-client / src / Google / Config.php

-      'base_path' => 'https://www.googleapis.com',
+      'base_path' => 'https://maps.googleapis.com',

谷歌-API的PHP的客户端/ SRC /谷歌/服务/ Maps.php

(我添加了此文件以进行Places调用。)

<?php

class Google_Service_Maps extends Google_Service
{
  const MAPS = "https://maps.googleapis.com/auth/maps";
  public function __construct(Google_Client $client)
  {
    parent::__construct($client);
    $this->servicePath = 'maps/api/';
    $this->version = 'v3';
    $this->serviceName = 'maps';

    $this->places = new Google_Service_Maps_Places_Resource(
        $this,
        $this->serviceName,
        'places',
        array(
          'methods' => array(
            'autocomplete' => array(
              'path' => 'place/autocomplete/json',
              'httpMethod' => 'GET',
              'parameters' => array(
                'input' => array(
                  'location' => 'query',
                  'type' => 'string',
                  'required' => true,
                ),
                'sensor' => array(
                  'location' => 'query',
                  'type' => 'boolean',
                  'required' => true,
                ),
                'location' => array(
                  'location' => 'query',
                  'type' => 'string',
                ),
                'radius' => array(
                  'location' => 'query',
                  'type' => 'integer',
                ),
              ),
            ),
          )
        )
    );
  }
}

class Google_Service_Maps_Places_Resource extends Google_Service_Resource
{

  public function autocomplete($input, $lat, $lng, $radius, $optParams = array())
  {
    $params = array('input' => $input, 'location' => "$lat,$lng", 'radius' => $radius, 'sensor' => false);
    $params = array_merge($params, $optParams);
    return $this->call('autocomplete', array($params));
  }
}

API批量调用代码

<?php

const API_KEY = 'MY_API_KEY';

set_include_path("google-api-php-client/src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Maps.php';
require_once 'Google/Http/Batch.php';

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey(API_KEY);

$client->setUseBatch(true);
$batch = new Google_Http_Batch($client);

$service = new Google_Service_Maps($client);

$inputs = array(
    'Dolore',
    'MacAl',
    'App Aca'
);

foreach($inputs as $input) {
    $req = $service->places->autocomplete($input, 37.7833, -122.4167, 500);
    $batch->add($req, $input);
}

$results = $batch->execute();

print_r($results);

print_r($req);

0 个答案:

没有答案