【发布时间】:2019-03-11 11:31:18
【问题描述】:
自 2018 年 7 月 16 日起,Google Maps API 不再完全免费。 As of July 16, 2018, to continue to use the Google Maps Platform APIs, you must enable billing on each of your projects. (https://developers.google.com/maps/documentation/javascript/usage-and-billing)。
我的问题是,在使用新的 Google Maps API 以及 Google 要求的相应密钥和计费信息一周后,我开始看到我的使用费用非常疯狂。这很好,因为这意味着我的网站有大量流量,我不应该专门抱怨这一点。问题是,我的绝大多数访问者可能甚至都没有看到/使用这些地图,而且一旦他们加载了一个包含地图的页面,我仍然会被收费。
我的想法是默认不显示地图,并有一个显示“显示地图”的链接,以便我只向真正有兴趣查看地图的人显示地图。然后我想向 Google Maps API 发出 AJAX 请求。我知道并承认这是一种规避付款的方式,但我认为这是公平的游戏,因为我只想在访问者真正看到/与 Google 地图功能互动时才收取使用费,而不是在他们加载页面后立即收费我的网站。谷歌会允许我这样做还是会被视为作弊?查看https://developers.google.com/maps/documentation/javascript/tutorial 的代码。我的想法是当访问者单击“显示地图”按钮时,使用 AJAX 请求调用此代码块,以尝试减少费用:
<div id="map"></div>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
</script>
更新 1:阅读 Executing <script> inside <div> retrieved by AJAX,Chocula 的回答说
作为 DOM 文本插入的 JavaScript 将不会执行。
这是有道理的。考虑到尝试我在这个问题中所问的技术含义,考虑到 JavaScript 在作为 DOM 文本插入时不会执行,我怀疑它是否会起作用。问题是我将使用 AJAX 生成 <script>...</script> 部分,作为 DOM 文本插入并且不会执行。如果我在页面加载后立即插入它,那么无论我是否通过显示代码的<div id="map"></div> 部分来实际显示地图,我都会立即被收费。当人们甚至没有看到地图或对看到地图或与之交互不感兴趣时,这听起来像是一种有趣的方式来规避所有这些情况的付款,公平的游戏,但我认为我不能用 AJAX 做到这一点。
【问题讨论】:
标签: javascript ajax google-maps google-maps-api-3 maps