一般情況下是引用的問題,產生的原因大概有兩種
1.不同架構的引用方式不同,引用js的方式不同導致
2.自身調用順序有誤
官方的引用方式是使用標簽引入,示例
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script>
還有官方提供的https的引用方式,示例
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script>
在引用中,是可以使用callback的,示例 注意,此方式確實能保證加載完成再調用其他函數,不會造成順序問題
function loadJScript() { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://api.map.baidu.com/api?v=2.0&ak=TuIXlHOOl8dyN4T60vCxqpeg3mfO2uOj&callback=init"; document.body.appendChild(script); } loadJScript();
說一個遇到的奇葩案例:
本人開發過程中服務在本機上,於是用手機訪問無線網,然后訪問本機上的項目,發現:
1.本機上的pc版本,或者是瀏覽器模擬手機版h5,都可以打開百度地圖
2.使用手機連接wifi打不開百度地圖
3.將項目部署在外網服務器上,使用外網訪問,能夠打開百度地圖
最后找了好久,我這的wifi上不去網的原因是手機沒有設置dns服務器。。。
除了以上引用方式之外,我們可以將自己的百度地圖的使用的鏈接放到瀏覽器中,會發現獲得到這樣的結果:
於是乎,該地址只是在百度上請求一個地址,來加載一個script標簽,寫入百度map的jsapi了。於是將其api輸入到瀏覽器url中,得到下面的結果
此文為js的實際代碼,於是我們既可以將此代碼down到本機,又可以寫在script標簽中,示例
<script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=aAgtfUXdoQOxb*************hokCO&services=&t=20190123111209"></script>
這種方式一定程度上能夠避免加載問題,有些瀏覽器不允許使用load的問題、
以上!