Javascript GoogleMaps不会在页面加载时进行初始化
我正在使用GoogleMapsAPI javascript,有时它工作得很好,但有时我重新加载页面,然后在浏览器的控制台点击中出现异常,地图没有显示 未捕获nc js?key=MyAPIKey&callback=initMap:98 我的javascript代码:Javascript GoogleMaps不会在页面加载时进行初始化,javascript,html,google-maps,Javascript,Html,Google Maps,我正在使用GoogleMapsAPI javascript,有时它工作得很好,但有时我重新加载页面,然后在浏览器的控制台点击中出现异常,地图没有显示 未捕获nc js?key=MyAPIKey&callback=initMap:98 我的javascript代码: <script async defer src="https://maps.googleapis.com/maps/api/js?key=NyAPIKey&callback=ini
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=NyAPIKey&callback=initMap">
</script>
function initMap() {
if (typeof google === 'object' && typeof google.maps === 'object') {
// Create the map.
var map = new google.maps.Map(document.getElementById('googleapi'), {
zoom: 14,
center: { lat: @Model.SelectedAppliance.Lat, lng: @Model.SelectedAppliance.Lon },
mapTypeId: 'terrain'
});
var marker = new google.maps.Marker({
position: map.center,
map: map,
title: 'Device Home'
});
// Construct the circle for each value in citymap.
// Note: We scale the area of the circle based on the population.
var positionCircle = new google.maps.Circle({
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
center: map.center,
radius: getMeters(@Model.SelectedAppliance.TriggerMile),
});
return positionCircle;
} else {
window.location.reload(true);
}
}
function ContainPoint(device, lat, lon) {
if (typeof google === 'object' && typeof google.maps === 'object') {
markerCPosition = new google.maps.LatLng(lat, lon);
var circleBounds = initMap().getBounds();
if (!circleBounds.contains(markerCPosition)) {
$(device).hide(true);
}
} else {
window.location.reload(true);
}
}
函数initMap(){
if(typeof google=='object'&&typeof google.maps=='object'){
//创建地图。
var map=new google.maps.map(document.getElementById('googleapi'){
缩放:14,
中心:{lat:@Model.SelectedAppliance.lat,lng:@Model.SelectedAppliance.Lon},
mapTypeId:'地形'
});
var marker=new google.maps.marker({
位置:地图中心,
地图:地图,
标题:“设备主页”
});
//为城市地图中的每个值构建圆。
//注:我们根据人口来缩放圆的面积。
var positionCircle=new google.maps.Circle({
strokeColor:“#FF0000”,
笔划不透明度:0.8,
冲程重量:2,
填充颜色:'#FF0000',
不透明度:0.35,
地图:地图,
中心:地图中心,
半径:getMeters(@Model.selectedapplication.triggerme),
});
返回位置圆;
}否则{
window.location.reload(true);
}
}
功能点(设备、横向、纵向){
if(typeof google=='object'&&typeof google.maps=='object'){
markerCPosition=newgoogle.maps.LatLng(lat,lon);
var circleBounds=initMap().getBounds();
如果(!circleBounds.contains(MarkerPosition)){
$(设备).hide(真);
}
}否则{
window.location.reload(true);
}
}
您尝试删除异步吗?现在是2016年,如果您没有在客户端Javascript上使用取消阻止异步和延迟标记,您需要进行干预
如果存在async属性,则将获取脚本
与解析并行,并在可用时立即进行评估
(可能在解析完成之前)
如果异步属性不存在,但延迟属性不存在
此时,将并行获取经典脚本并
当页面完成解析时计算
如果两个属性都不存在,则立即获取并计算脚本,阻止解析,直到这两个属性都完成,从而使一切变得缓慢和糟糕
我们之所以添加这两个选项,是因为并非所有浏览器都支持异步,而defer则是这些旧浏览器的备用选项
如果存在async,则脚本将在可用时立即执行,但不会阻止页面的进一步解析。如果不存在async,但存在defer,则在页面完成解析后执行脚本。我没有尝试过它。异步的意思是什么?异步:当以异步方式执行任务时,您可以在上一个任务完成之前直接切换到另一个任务。一项任务不依赖于另一项任务。如果需要更多信息,请转到链接。您的意思是,我的脚本将在可用时立即执行。在我的情况下,我应该做什么?删除async并延迟,它将像一个符咒一样工作。虽然我不支持,但函数似乎不在
标记内,是真的吗?我认为Uncaught nc
来自函数。是的,我忘了在我的问题中添加它