Google Maps Javascript API无法正确加载

时间:2015-12-09 10:50:39

标签: javascript api google-maps google-maps-api-3

我正在尝试在网页中加载Google Maps API,主体底部带有<script>标记,上面引用了#map元素。

获取错误提示:&#34;此页面无法显示Google地图元素。提供的Google API密钥无效,或者此网站无权使用它。错误代码:InvalidKeyOrUnauthorizedURLMapError&#34;

我的API KEY绝对正确;我已经多次检查过了。

我已选择接受以下推荐人的请求 * .mywebsite.com / *
* .mywebsite.com *
www.mywebsite.com/*
www.mywebsite.com/test //这是我试图加载地图的网址。

我尝试过没有API Key Reference且没有Init回调,并且地图间歇加载。有时它会加载(大约20%的时间),有时它不会加载,我得到以下控制台日志 - ReferenceError:google未定义;

<script async defer src="https://maps.googleapis.com/maps/api/js?key=MY_API_KEY&callback=initMap"></script>
<script src="/js/map.js"></script>

我的map.js文件包含地图配置

var map;
var mapLatLng = {lat: 13.778182, lng: -0.23676};
var mapStyle = [maps style options] // https://snazzymaps.com/style/38/shades-of-grey
var mapMarker = '/img/marker.png';

function initMap() {

  var styledMap = new google.maps.StyledMapType(mapStyle,
  {name: "Styled Map"});

  var mapOptions = {
    center: mapLatLng,
    zoom: 10,
    scrollwheel: false,
    navigationControl: false,
    mapTypeControl: false,
    scaleControl: false,
    mapTypeControlOptions: {
    mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
  }
};

var map = new google.maps.Map(document.getElementById('map'),
mapOptions);

var marker = new google.maps.Marker({
  position: mapLatLng,
  map: map,
  title: 'Hello World!',
  icon: mapMarker
});

//Associate the styled map with the MapTypeId and set it to display.
map.mapTypes.set('map_style', styledMap);
map.setMapTypeId('map_style');

}

google.maps.event.addDomListener(window, 'load', initMap);

1 个答案:

答案 0 :(得分:3)

您将GMap脚本称为 async defer ,因此您不确定该脚本是否会在 map.js 之前下载并执行。您的 map.js 脚本会调用GMap API。

如果没有 async defer 属性,您可以先测试吗?如果没关系,只需在initMap函数中移动所有初始化代码,它应该可以工作:

function initMap() {
   var map = new google.maps.Map(document.getElementById('map'), mapOptions);

   var marker = new google.maps.Marker({
      position: mapLatLng,
      map: map,
      title: 'Hello World!',
      icon: mapMarker
    });

   //Associate the styled map with the MapTypeId and set it to display.
   map.mapTypes.set('map_style', styledMap);
   map.setMapTypeId('map_style');
   var styledMap = new google.maps.StyledMapType(mapStyle, {name: "Styled Map"});

   var mapOptions = {
        center: mapLatLng,
        zoom: 10,
        scrollwheel: false,
        navigationControl: false,
        mapTypeControl: false,
        scaleControl: false,
        mapTypeControlOptions: {
        mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
      }
   };
}