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

时间:2013-07-04 13:13:04

标签: performance google-maps google-maps-api-3 request

我打电话给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());
}
);

但正如你所看到的,我做了两次函数verander(纬度,经度)。

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

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

FTR:这是Google的请求:

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

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

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

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

  • d。针对Static Maps API中的地图图片发出单个请求。

  • 即对街景图像API中的全景图像进行单一请求。

所以我担心这是不可能的,但是,嘿,建议总是受欢迎的!

1 个答案:

答案 0 :(得分:4)

你的呼叫将api放置两次并加载街景两次。这就是四个电话,但我认为如果将它们加载到一个页面上,它们只将这两个街景视图计为一次。此外,您的地方电话将是客户端,因此他们不会计入您的限制。

但是要回答你的问题,因为你想向用户展示两个街景,所以没有环路来绕过双重负载。

在客户要求之前,我要做的是不加载任何东西。而是有一些像<button onclick="loadStreetView('cafe')">Click here to see Nearby Cafe</button>这样的号召性用语类型按钮,当点击它们时,它们会调用附近的搜索并加载街景。并且由于它仅在客户端请求时,您的页面加载永远不会增加使用量,例如当您的网站被搜索引擎抓取时。

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

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

  
      
  • 拥有API密钥的用户每24小时允许1 000个请求
  •   
  • 通过API控制台验证其身份的用户每24小时允许10万次请求。通过在控制台中启用结算,验证需要信用卡。我们要求您的信用卡纯粹用于验证您的身份。使用Places API不会向您的卡收费。
  •   
如果您自己验证,

每天100,000个请求。这很不错。

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

你每天可以获得25,000个地图加载。

  

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

所以,如果你稍微过了一点,那么他们似乎不会介意。


P.S。在zoom:1zoomControl : false之后你有一个额外的逗号,他们不应该在那里。会在IE等浏览器中造成错误。您在var panoramaOptions = { ... }之后和map = new

之前也缺少分号