【发布时间】:2016-10-12 08:56:06
【问题描述】:
我有一个按钮,当被点击时会执行 ajax 并将一个 html 文件加载到具有这行代码的引导模式。
<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>
并且在 /track/viewMap 它将返回一个有此脚本的地图
<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() 函数。
/track/viewMap代码
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>
【问题讨论】:
-
不要加载两次...(除非我们看到更多您的代码)
-
我不明白这样的问题是如何被投票赞成的,但是完整代码的更好的问题却被投票反对
-
您是否将 html 页面加载到 iframe 中?
标签: javascript jquery