所謂API密鑰(API Key),其實就是一個字符串,在使用script標簽導入API類庫的時候作為請求參數(shù)傳給谷歌地圖的服務器,形式就是: <script src="http://ditu.google.com/maps?file=api&v=2&key=YOUR_API_KEY" type="text/javascript"> </script> 使用谷歌地圖API的第一步就是要注冊一個API密鑰,谷歌的API使用條款對這個密鑰的用途有很正式的說明,其實總結起來也很簡單: 1、谷歌地圖API提供的服務是免費的,對于通過API正常使用谷歌地圖的網(wǎng)站基本沒有任何限制; 2、說“基本”沒有限制的原因是,谷歌對每個API密鑰對應的網(wǎng)站所作的地理編碼/地址解析請求次數(shù)有限制,每天(24小時)的請求次數(shù)不能超過15000次; 3、不能使用谷歌地圖從事任何非法的行為,否則谷歌應該能夠通過這個密鑰阻止你的網(wǎng)站使用谷歌地圖; 4、更簡單的說,谷歌使用這個密鑰保證能夠對所有API用戶/網(wǎng)站進行區(qū)分,方便必要的時候對“超常規(guī)”用戶進行阻攔。 對于地址解析的次數(shù)限制,一般來說不會有什么影響,這里主要說API密鑰。 對于API密鑰,還有幾點需要注意: 1、如果使用API的頁面還沒有發(fā)布,只是在本地調試,可以不用密鑰,隨便用個字符串代替就可以了; 2、API密鑰只對網(wǎng)站目錄或者域有效,所以,雖然你是使用同一個谷歌賬號登錄后注冊的密鑰,但是,對不同域的網(wǎng)頁,需要用這些域分別注冊不同的密鑰,對于同一個域里的頁面,直接拿你網(wǎng)站的域名注冊一個,在這個域里的所有頁面就可以通用這個密鑰了。 那么就產(chǎn)生了一個關于API密鑰的實際問題: 同一個頁面需要支持不同的域名,最簡單的就是公司有一個cn域名,也有一個com域名,這該怎么辦? 其實,對于這種問題,可以提前先注冊好不同域名對應的密鑰,存在你的JS變量里面,頁面加載時通過window.location得到當前請求頁面的域名,通過這個域名再找到對應的密鑰,然后使用script動態(tài)加載的方法加載地圖API,用代碼描述就是: //事先已經(jīng)注冊好的密鑰 var keyMapping = {host1:key1, host2:key2}; //實際請求頁面的域名 var requestHost = window.location.hostname; //找到需要的密鑰 var key = keyMapping[requestHost]; //構造加載API的script url var apiUrl = "http://ditu.google.com/maps?file=api&v=2&key=" + key; //使用script動態(tài)加載的方法加載地圖API var scriptTag = document.createElement('script'); scriptTag.setAttribute('type', 'text/javascript'); scriptTag.setAttribute('src', apiUrl); document.getElementsByTagName('head')[0].appendChild(scriptTag); 使用這段代碼時,需要注意把你自己的JS代碼中對API的各個類的調用放在API加載完成以后,詳細的解釋可以先搜索一下著名的DomReady的問題,三言兩語還是說不清楚的。 |
|
來自: damnit > 《googlemap api詳解》