2

我打电话给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(latitude,longtitude)。

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)显示街景全景图;

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

  • d。来自静态地图 API 的地图图像的单个请求。

  • e. 从 Street View Image API 发出一个全景图像请求。

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

4

1 回答 1

5

您的调用两次放置 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 小时允许 1000 个请求
  • 通过 API 控制台验证身份的用户每 24 小时允许 100 000 个请求。通过在控制台中启用计费,需要信用卡进行验证。我们要求您提供信用卡纯粹是为了验证您的身份。使用 Places API 不会从您的卡中收取费用。

如果您验证自己,则每天有 100,000 个请求。这很体面。

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

你每天获得 25,000 个地图加载,它说。

为了适应使用量出现短期峰值的站点,只有在指定站点连续超过 90 天超过限制时,使用限制才会对给定站点生效。

因此,如果您稍微不考虑一下,那么他们似乎不会介意。


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

于 2013-07-04T21:06:59.893 回答