Infatti il link postato http://www.birdtheme.org/useful/v3largemap.html opere senza chiave (c'è solo un avvertimento nella console). Sembra che Google stia whitelist alcuni nomi di dominio per consentire l'uso dell'API senza chiave.
Ho cercato di usare la v3 API di Google Maps per visualizzare piastrelle OpenStreetMap ma produce un "errore di API di Google Maps: MissingKeyMapError" sul mio localhost mentre si sta lavorando su questo sito senza chiave API: http://harrywood.co.uk/maps/examples/google-maps/apiv3.html
Sulla maggior parte siti web che non utilizzano una chiave API, c'è un errore che impedisce l'utilizzo di Google Maps ma è possibile aggirare questa censura.
soluzione se non si possiede il server utilizzando API di Google Maps senza chiave:
Blocca la richiesta HTTP inviando l'errore con un addon come AdBlockPlus e dello Stato http://maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?*
Questo vi darà accesso alle tessere API di Google Maps, ai marker, al popup InfoWindow ... Ma se si desidera utilizzare l'API Geocoding, è necessario anche remove your HTTP referer header
con un componente aggiuntivo del browser come "Modifica intestazioni".
soluzione per aggiungere nella vostra pagina web in modo che ogni visitatore può accedere a Google Maps API senza chiave:
Qui di seguito è un JavaScript incidere ho creato per utilizzare Google Maps API V3 senza chiave e bypassare il messaggio di errore.
// 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);
Questo vi darà accesso a Google Maps API di piastrelle, pennarelli, infowindow popup ... per l'API Geocoding, si hanno anche per rimuovere il tuo riferimento HTTP con il meta tag HTML sottostante.
<meta name="referrer" content="no-referrer"> <!-- don't send HTTP referer for privacy purpose and to use Google Maps Geocoding API without key -->
Grazie, questo funziona per me :) – user3719857
Sì, funziona, ma la prima richiesta API è molto lenta (da 5 a 10 secondi), a causa del download ritardato del file QuotaService.RecordEvent di Google, quindi di qualsiasi altro richiesta funziona bene ... Qualche spiegazione? –
@DrFred Ho visto che ci vuole un po 'più di tempo per ottenere la prima risposta dall'API di Geocoding. Il problema del ritardo proviene certamente dai server di Google che tentano di autenticarti con una chiave API, ma sono lieto di avere una soluzione funzionante e spero che questa soluzione possa funzionare il più a lungo possibile. Prima di questo trucco, non riuscivo nemmeno a testare l'API di Google Maps da localhost senza chiave API. Se lavorassi su un nuovo progetto, userei OpenStreetMap per mappe gratuite e per eliminare queste restrizioni. – baptx