Tat den Link ohne Schlüssel http://www.birdtheme.org/useful/v3largemap.html Werke geschrieben (es gibt nur eine Warnung in der Konsole). Es sieht so aus, als ob Google einige Domainnamen auf die weiße Liste setzt, um die Verwendung von API ohne Schlüssel zu ermöglichen. OpenStreetMap Fliesen
Ich habe versucht, die Google Maps API v3 zu verwenden, um anzuzeigen, aber es erzeugt eine „Google Maps-API-Fehler: MissingKeyMapError“ auf meinem localhost, während es auf dieser Website ohne API-Schlüssel funktioniert: http://harrywood.co.uk/maps/examples/google-maps/apiv3.html
Auf den meisten Websites, die keinen API-Schlüssel verwenden, gibt einen Fehler, der die Verwendung von Google Maps verhindert, aber Sie können diese Zensur umgehen.
Lösung, wenn Sie nicht selbst den Server mit Google Maps API ohne Schlüssel:
blockieren die HTTP-Anforderung den Fehler mit einem Add-on wie AdBlockPlus senden und die Regel http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?*
Diese Sie geben Zugriff auf Google Maps API-Kacheln, Marker, InfoWindow Popup ... Aber wenn Sie die Geocoding-API verwenden möchten, müssen Sie auch remove your HTTP referer header
mit einem Browser-Addon wie "Header ändern".
Lösung in Ihrer Web-Seite hinzufügen, damit ohne Schlüssel alle Besucher können Google Maps-API zugreifen:
Unten finden Sie eine JavaScript-Hack ist ich ohne Schlüssel und umgehen die Fehlermeldung Google Maps API V3 verwenden erstellt.
// 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);
Dies werden Sie auf Google Maps API Kacheln zugreifen, Marker, infowindow Pop-up ... Für das Geocoding API haben Sie auch unter Ihrem Referrer mit dem HTML-Meta-Tag zu entfernen.
<meta name="referrer" content="no-referrer"> <!-- don't send HTTP referer for privacy purpose and to use Google Maps Geocoding API without key -->
Vielen Dank, das funktioniert für mich :) – user3719857
Ja, es funktioniert, aber die erste API-Anfrage ist sehr langsam (5 bis 10 Sekunden), aufgrund der verzögerten Download von Google QuotaService.RecordEvent Datei, dann alle anderen Anfrage funktioniert gut ... Eine Erklärung? –
@DrFred Ich habe gesehen, dass es etwas länger dauert, um die erste Antwort von der Geocoding-API zu erhalten. Das Verzögerungsproblem kommt sicherlich von Google-Servern, die versuchen, Sie mit einem API-Schlüssel zu authentifizieren, aber ich bin froh, eine funktionierende Lösung zu haben, und ich hoffe, dass diese Problemumgehung so lange wie möglich funktioniert. Vor diesem Hack konnte ich Google Maps API nicht einmal von localhost ohne API-Schlüssel testen. Wenn ich an einem neuen Projekt arbeiten würde, würde ich sicherlich OpenStreetMap für freie Karten verwenden und diese Einschränkungen loswerden. – baptx