2016-11-02 49 views
-1

我一直在嘗試添加谷歌地圖到我的網頁沒有用。我的代碼獨立工作,但是當我添加到一個真正的網頁時,地圖根本不顯示。使用谷歌地圖API內部div不工作

<div id="map" style="width:100%;height:500px"></div> 
<script> 
    var map; 
    function initMap() { 
    map = new google.maps.Map(document.getElementById('map'), { 
     center: {lat: -34.397, lng: 150.644}, 
     zoom: 8 
    }); 
    } 
</script> 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBcwtM8EBe7BE1NyPbU5SDYVYoBBtbtpTI&callback=initMap" 
async defer></script> 

和頁面看起來像這樣

正如你可以看到,在div出現了,卻沒有地圖。我如何得到這個展示?

+0

檢查控制檯日誌,如果它拋出任何錯誤.. – choz

+0

不,沒有錯誤 – JCole

+0

對我的作品罰款:https://jsfiddle.net/3xquh1gs/ – putvande

回答

2

您的myMap函數從未被調用過。你可以這樣調用它,

function myMap() { 
    ... 
} 

myMap(); 

或在腳本中使用回調參數..

<script async defer src="http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=myMap"> </script> 

編輯

你說它錯了,它應該是一個&,不&amp;在您的腳本參數。嘗試將您的代碼更改爲,

<div id="map" style="width:500px;height:500px"></div> 

<script> 
    function myMap() { 
     var mapCanvas = document.getElementById("map"); 
     var mapOptions = { 
      center: new google.maps.LatLng(51.508742,-0.120850), 
      zoom: 5 
     }; 
     var map = new google.maps.Map(mapCanvas, mapOptions); 
    } 
</script> 

<script async defer src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBcwtM8EBe7BE1NyPbU5SDYVYoBBtbtpTI&callback=myMap"> </script> 

有關更多詳細信息,請查看fiddle

- 編輯2 -

我不知道爲什麼你不能讓它在你的網站工作。因爲我可以做得很好。

Google map on memphis.edu

下面是我在您的網站在控制檯上運行時注入腳本。

$('.content--body__wrapper').append('<div id="map" />') 
$('#map').attr('style', 'width:500px; height:500px') 
$('.content--body__wrapper').append(`<script> 
    var map; 
    function initMap() { 
    map = new google.maps.Map(document.getElementById('map'), { 
     center: {lat: -34.397, lng: 150.644}, 
     zoom: 8 
    }); 
    } 
</script>`); 
$('.content--body__wrapper').append(`<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBcwtM8EBe7BE1NyPbU5SDYVYoBBtbtpTI&callback=initMap" async defer></script>`); 

我可以從你的截圖告訴你initMap功能不會被調用。我不確定它是否是谷歌地圖的回調,因爲它在控制檯中沒有提供任何錯誤。

下面是一種替代方法,您可能想嘗試。嘗試在js上調用initMap而不是回調。

<div id="map" style="width:100%;height:500px"></div> 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBcwtM8EBe7BE1NyPbU5SDYVYoBBtbtpTI"></script> 

<script> 
    $(function() { 
     var map; 
     function initMap() { 
      map = new google.maps.Map(document.getElementById('map'), { 
       center: {lat: -34.397, lng: 150.644}, 
       zoom: 8 
      }); 
     } 
     initMap(); 
    }); 
</script> 
+0

我添加回調腳本,並調用我的地圖功能,但它仍然沒有顯示。 – JCole

+0

@JCole你可以嘗試在腳本中添加「async defer」嗎?它可能已在您的瀏覽器緩存中首先從您的瀏覽器緩存中加載,然後再打電話失敗。或者僅使用第一種方法.. – choz

+0

我已經編輯了上面的代碼以反映我的新代碼,但它仍然顯示爲空白...它與我的div有什麼關係? – JCole