首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MAX_DIMENSIONS_EXCEEDED距离母线误差

MAX_DIMENSIONS_EXCEEDED距离母线误差
EN

Stack Overflow用户
提问于 2018-08-27 06:11:31
回答 2查看 4.9K关注 0票数 3

我知道"MAX_DIMENSIONS_EXCEEDED“错误显示当您的请求包含超过25个起源,或超过25个目的地。但我只想知道这个限制只适用于免费的api客户,还是对所有人都适用?

我正在使用下面的google服务

var service =新的google.maps.DistanceMatrixService();

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 16:55:26

如果您目前有免费的计划,您将得到最多25个起源或25个目的地的每个请求。如果你超出了免费计划津贴,你必须额外支付。所以这个限制是你是否付钱。

保费计划,您得到最多25个起源和25个目的地,每个请求,只有在最新的价格变化之前有溢价计划的用户可用。从你所说的来看,你不可能得到那笔钱。

请参阅这里的更多内容:https://developers.google.com/maps/premium/usage-limits

票数 3
EN

Stack Overflow用户

发布于 2022-03-14 17:39:31

呵呵:)

我在创建一个“中型”MapsAPI项目时偶然发现了这个问题。

尽管我们已经在Google上启用并配置了计费,但我还是显示了这个状态代码。

你被允许超过马克斯。每个请求有25个目的地和来源(如Do2正确描述的)。

但是如果你有150家商店或者更多呢?

我的想法是将请求分割成块并调用API服务器端。

因此,我将API调用排除在PHP文件中,并使用AJAX (app.js <-> magic.php)传递数据。

请看我的解决办法:

代码语言:javascript
复制
/* CLIENTSIDE app.js */
const getDistanceMatrix = (service, parameters) =>
    new Promise((resolve, reject) => {
      let paramString = JSON.stringify(parameters);
      //console.log(paramString);

      $.ajax({
        type: "Post",
        url: "/develope/kk-store-locator/magic.php",
        data: {
          daten: paramString,
        },
        success: function (response) {
          //Wenn Query success
          response = JSON.parse(response);
          console.log(response);

          const distances = [];
          const results = response.rows[0].elements;
          for (let j = 0; j < results.length; j++) {
            const element = results[j];
            var addressText = response.destination_addresses[j];            
            
            //const distanceText = element.distance.text;
            //const distanceVal = element.distance.value;
            const distanceObject = {
              storeid: stores[j],
             distanceText: addressText,
            };
            distances.push(distanceObject);
          }

          resolve(distances);
        },
        error: function (response) {
          // Wenn Query failed = Promise revoked
          responserr = JSON.parse(response);
          console.log(responserr);
          reject(response);
        },
      });
    });
  const distancesList = await getDistanceMatrix(service, {
    origins: [origin],
    destinations: destinations,
    travelMode: "DRIVING",
    unitSystem: google.maps.UnitSystem.METRIC,
  });

  // HIER Zurückgeben
  distancesList.sort((first, second) => {
    return first.distanceVal - second.distanceVal;
  });

  return distancesList;
}

代码语言:javascript
复制
SERVERSIDE (magic.php):

<?php 
data = json_decode($_POST["daten"]);
$origin = $data->origins[0];
$destinations = $data->destinations;

//Variablendeklaration Request-String
$chunk_size = 24;                                     //25 Stores
$dest_counter = sizeof($destinations);                //StoreLength gesamt
$dest_chunkz = ceil($dest_counter / $chunk_size);     //Aufrunden für Requestanzahl
$strings = [];


//Build String max.25 Destinations
$iter = 0;
for ($i = 0; $i < $dest_chunkz; $i++) {
  for ($iter; $iter < $dest_counter; $iter++) {
    $strings[$i] .= $destinations[$iter]->lat . "," . $destinations[$iter]->lng . "|";
    $items = substr_count($strings[$i], '|');
    if ($items == 25) { //Runtime-Limit (max. 25)
      break;
    }
  }
}

//Call to Google Distanz-API
foreach ($strings as $string) {
  $string = substr($string, 0, -1);
  $latNlong_origin = $origin->lat . "," . $origin->lng;

  $distance_data = file_get_contents('https://maps.googleapis.com/maps/api/distancematrix/json?&origins=' . urlencode($latNlong_origin) . '&destinations=' . urlencode($string) . '&key=' . $apiKey . '');

  $distance_arr = json_decode($distance_data);
  array_push($distance_copy, $distance_arr);

  if ($distance_arr->status == 'OK') {
    $destination_addresses = $distance_arr->destination_addresses;
    $origin_addresses = $distance_arr->origin_addresses;
  } else {
    echo "<p>The request was Invalid</p>";
    echo $distance_arr->status;
    exit();
  }

  if ($origin_addresses == "" or $destination_addresses == "") {
    echo "<p>Destination or origin address not found</p>";
    exit();
  }
}

=> remove duplicates, and return <=

我希望这能让“解决办法”的想法更接近一点--注意,您总是需要启用计费才能与所有的Google APIs一起工作。

祝你今天愉快:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52033446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档