Ответ 1
В действительности ссылка, которую вы разместили http://www.birdtheme.org/useful/v3largemap.html, работает без ключа (в консоли есть только предупреждение). Похоже, Google добавляет несколько доменных имен, чтобы разрешить использование API без ключа.
Я попытался использовать API Google Maps v3 для отображения плиток OpenStreetMap, но на моем локальном хосте он выдает "Ошибка API Карт Google: MissingKeyMapError", пока он работает на этом сайте без ключа API: http://harrywood.co.uk/maps/examples/google-maps/apiv3.html
На большинстве веб-сайтов, которые не используют ключ API, есть ошибка, которая препятствует использованию Карт Google, но вы можете обойти эту цензуру.
Решение, если вы не владеете сервером с помощью API Карт Google без ключа:
Заблокировать HTTP-запрос, отправив ошибку с аддоном типа AdBlockPlus и правилом http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?*
Это даст вам доступ к API-интерфейсам API Карт Google, маркерам, всплыванию infoWindow...
Но если вы хотите использовать API геокодирования, вы также должны remove your HTTP referer header
с помощью аддона браузера, например "Изменить заголовки".
Решение для добавления на вашу веб-страницу, чтобы каждый посетитель мог получить доступ к API Карт Google без ключа:
Ниже представлен JavaScript-хак, который я создал для использования API Карт Google V3 без ключа и обходит сообщение об ошибке.
// hack Google Maps to bypass API v3 key (needed since 22 June 2016 http://googlegeodevelopers.blogspot.com.es/2016/06/building-for-scale-updates-to-google.html)
var target = document.head;
var observer = new MutationObserver(function(mutations) {
for (var i = 0; mutations[i]; ++i) { // notify when script to hack is added in HTML head
if (mutations[i].addedNodes[0].nodeName == "SCRIPT" && mutations[i].addedNodes[0].src.match(/\/AuthenticationService.Authenticate?/g)) {
var str = mutations[i].addedNodes[0].src.match(/[?&]callback=.*[&$]/g);
if (str) {
if (str[0][str[0].length - 1] == '&') {
str = str[0].substring(10, str[0].length - 1);
} else {
str = str[0].substring(10);
}
var split = str.split(".");
var object = split[0];
var method = split[1];
window[object][method] = null; // remove censorship message function _xdc_._jmzdv6 (AJAX callback name "_jmzdv6" differs depending on URL)
//window[object] = {}; // when we removed the complete object _xdc_, Google Maps tiles did not load when we moved the map with the mouse (no problem with OpenStreetMap)
}
observer.disconnect();
}
}
});
var config = { attributes: true, childList: true, characterData: true }
observer.observe(target, config);
Это даст вам доступ к API-интерфейсам API Карт Google, маркерам, всплыванию infoWindow... Для API геокодирования вам также необходимо удалить ваш HTTP-референт с метатегом HTML ниже.
<meta name="referrer" content="no-referrer"> <!-- don't send HTTP referer for privacy purpose and to use Google Maps Geocoding API without key -->