我可以减少 Google Maps JavaScript API v3 中的请求量吗?

Sho*_*use 2 performance google-maps request google-maps-api-3

我给 2 个地点打电话。我从 xml 文件中获取某个位置的经度和经度。首先是最近的咖啡馆,然后是最近的学校。

$.get('https://maps.googleapis.com/maps/api/place/nearbysearch/xml?
location='+home_latitude+','+home_longtitude+'&rankby=distance&types=cafe&sensor=false&key=X',function(xml)
{
verander($(xml).find("result:first").find("geometry:first").find("location:first").find("lat").text(),$(xml).find("result:first").find("geometry:first").find("location:first").find("lng").text());
}
);

$.get('https://maps.googleapis.com/maps/api/place/nearbysearch/xml?
location='+home_latitude+','+home_longtitude+'&rankby=distance&types=school&sensor=false&key=X',function(xml)
{
verander($(xml).find("result:first").find("geometry:first").find("location:first").find("lat").text(),$(xml).find("result:first").find("geometry:first").find("location:first").find("lng").text());
}
);
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,我执行了函数 verander(latitude,longitude) 两次。

function verander(google_lat, google_lng)
  {
        var bryantPark = new google.maps.LatLng(google_lat, google_lng);
        var panoramaOptions = 
        {
            position:bryantPark,
            pov:
            {
                heading: 185,
                pitch:0,
                zoom:1,
            },
            panControl : false,
            streetViewControl : false,
            mapTypeControl: false,
            overviewMapControl: false   ,
            linksControl: false,
            addressControl:false,
            zoomControl : false,
        }
        map = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"), panoramaOptions);
        map.setVisible(true);
  }
Run Code Online (Sandbox Code Playgroud)

是否可以仅在一个请求中推送这两个位置(也许通过数组)?我知道这听起来很愚蠢,但我真的想知道它们是否不是减少这些谷歌地图请求的后门。

FTR:这是对 Google 的请求:

在适用于 Maps API 的使用限制的背景下,什么构成“地图加载”?在以下情况下会发生单个地图加载:

  • A。当网页或应用程序加载时,使用 Maps JavaScript API(V2 或 V3)显示地图;

  • b. 未显示地图的网页或应用程序使用 Maps JavaScript API(V2 或 V3)显示街景全景图;

  • C。加载 Maps API for Flash 的 SWF 由网页或应用程序加载;

  • d. 从静态地图 API 发出对地图图像的单个请求。

  • e. 从街景图像 API 发出对全景图像的单个请求。

所以恐怕这是不可能的,但是嘿,建议总是受欢迎的!

Ant*_*los 5

您的调用放置 api 两次并加载街景两次。所以这是四个调用,但我认为如果您将这两个街景加载到一页上,它们只会将其计为一次。而且您的地方呼叫将在客户端进行,因此不会计入您的限制。

\n\n

但要回答你的问题,没有漏洞可以绕过双重负载,因为你想向用户展示两个街景。

\n\n

我要做的就是在客户要求之前不加载任何内容。相反,有几个号召性用语类型的按钮,例如,<button onclick="loadStreetView(\'cafe\')">Click here to see Nearby Cafe</button>当单击时,它们将调用附近的搜索并加载街景。而且由于它仅根据客户端请求加载,因此您的页面加载永远不会像搜索引擎抓取您的网站时那样增加使用计数。

\n\n

有关这些使用限制的更多信息

\n\n

Google Places API 的用途与地图不同。https://developers.google.com/places/policies#usage_limits

\n\n
\n
    \n
  • 拥有 API 密钥的用户每 24 小时允许 1\xe2\x80\x89000 个请求
  • \n
  • 通过 API 控制台验证身份的用户每 24 小时允许 100\xe2\x80\x89000 个请求。通过在控制台中启用计费,需要使用信用卡进行验证。我们要求您提供信用卡纯粹是为了验证您的身份。您的卡不会因使用 Places API 而被扣费。
  • \n
\n
\n\n

如果您验证自己的话,每天会收到 100,000 个请求。这相当不错。

\n\n

至于谷歌地图,https://developers.google.com/maps/faq#usagelimits

\n\n

上面写着,您每天会加载 25,000 个地图。

\n\n
\n

为了适应短期使用高峰的网站,只有当特定网站连续 90 天以上超过​​限制时,使用限制才会生效。

\n
\n\n

因此,如果你稍微超过一点,他们似乎就不会介意。

\n\n
\n\n

ps 你在zoom:1and之后有一个额外的逗号zoomControl : false,它们不应该在那里。在某些浏览器如IE中会导致错误。您还缺少var panoramaOptions = { ... }前后的分号map = new

\n