我有一個按鈕,當點擊會做ajax和加載一個HTML文件引導模態,有這行代碼。防止谷歌地圖的JavaScript加載兩次
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAbePUCw9D44HfcTuiWyFQs_HbQ_6Qw-fA&signed_in=true&libraries=places&callback=initMap"
async defer></script>
當我再次單擊該按鈕時,出現此錯誤。
您已在此頁面上多次包含Google Maps API。這可能會導致意外的錯誤。
如何防止googlemaps腳本獲取兩次?
這裏是我的代碼
<div class="modal fade" id="trackMapModal" role="dialog"></div>
<button class='pull-right track' id="2"><strong>Track it!</strong></button>
<script>
$("#trackMapModal").appendTo("body");
$(".track").click(function(){
var id = this.id;
$.ajax({
type:"POST",
url:"<?=base_url("/track/viewMap")?>",
dataType:"html",
data: {id : id},
success:function(res){
$("#trackMapModal").html(res).modal("show");
}
})
});
</script>
而在/音軌/視圖地圖它會返回一個地圖,有這個腳本
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAbePUCw9D44HfcTuiWyFQs_HbQ_6Qw-fA&signed_in=true&libraries=places&callback=initMap"
async defer></script>
該腳本將不得不將運行initMap callback()函數何時加載。
/音軌/視圖地圖代碼
function viewMap(){
$id = $this->input->post("id,true);
$data["id"]=$id;
$data["loc"]["dest"]=array("lat"=>51.1124587,"lng"=>42.1245457);
$this->load->view("/MAIN/mapModal",$data);
}
在視圖中命名/MAIN/mapModal
<div id="map"></div>
<script>
function initMap() {
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
var marker2;
var map = new google.maps.Map(document.getElementById('map'),{
center: {lat: <?=$loc["lat"]?>, lng: <?=$loc["lng"]?>},zoom:17
});
marker2 = new google.maps.Marker({
position: myLatlng,
map: map
});
marker2.setMap(map);
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAbePUCw9D44HfcTuiWyFQs_HbQ_6Qw-fA&signed_in=true&libraries=places&callback=initMap" async defer></script>
不要加載兩次.. 。(除非我們看到更多你的代碼) – evolutionxbox
我不明白這樣的問題如何得到upvoted但更好的追求完整的代碼離子得到downvoted – Pete
你是否加載到一個iframe的HTML頁面? –