Google地图无法使用api

时间:2016-11-29 12:28:58

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

我在我的项目上嵌入谷歌地图,但它无法正常工作。我为之前的项目使用了相同的代码,效果很好。当我检查控制台时,它显示错误" TypeError:a为null" 。

这是我的代码

<script>

  jQuery(function($) {
// Asynchronously Load the map API 
var script = document.createElement('script');
script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyCcgSw6pOY1_1t4LpPQK360V0reIfLDOi0&callback=initialize"; 
document.body.appendChild(script);
});




function initialize() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
    maxZoom: 4,
    minZoom: 2,
    navigationControl: false,
     scrollwheel: false,
    mapTypeControl: false,
    draggable: true,
    mapTypeId: 'roadmap',
    styles: [
        {elementType: 'geometry', stylers: [{color: '#F7F7F7'}]},
        {elementType: 'labels.text.stroke', stylers: [{color: '#F7F7F7'}]},
        {elementType: 'labels.text.fill', stylers: [{color: '#746855'}]},
        {
          featureType: 'administrative.locality',
          elementType: 'labels.text.fill',
          stylers: [{color: '#d59563'}]
        },
        {
          featureType: 'poi',
          elementType: 'labels.text.fill',
          stylers: [{color: '#d59563'}]
        },
        {
          featureType: 'poi.park',
          elementType: 'geometry',
          stylers: [{color: '#BCD9E1'}]
        },
        {
          featureType: 'poi.park',
          elementType: 'labels.text.fill',
          stylers: [{color: '#6b9a76'}]
        },
        {
          featureType: 'road',
          elementType: 'geometry',
          stylers: [{color: '#38414e'}]
        },
        {
          featureType: 'road',
          elementType: 'geometry.stroke',
          stylers: [{color: '#212a37'}]
        },
        {
          featureType: 'road',
          elementType: 'labels.text.fill',
          stylers: [{color: '#9ca5b3'}]
        },
        {
          featureType: 'road.highway',
          elementType: 'geometry',
          stylers: [{color: '#b9b9b9'}]
        },
        {
          featureType: 'road.highway',
          elementType: 'geometry.stroke',
          stylers: [{color: '#b9b9b9'}]
        },
        {
          featureType: 'road.highway',
          elementType: 'labels.text.fill',
          stylers: [{color: '#f3d19c'}]
        },
        {
          featureType: 'transit',
          elementType: 'geometry',
          stylers: [{color: '#2f3948'}]
        },
        {
          featureType: 'transit.station',
          elementType: 'labels.text.fill',
          stylers: [{color: '#d59563'}]
        },
        {
          featureType: 'water',
          elementType: 'geometry',
          stylers: [{color: '#BCD9E1'}]
        },
        {
          featureType: 'water',
          elementType: 'labels.text.fill',
          stylers: [{color: '#515c6d'}]
        },
        {
          featureType: 'water',
          elementType: 'labels.text.stroke',
          stylers: [{color: '#BCD9E1'}]
        }
      ]



};

// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);





// Multiple Markers
var markers = [
    ['The lux belle mare mauritius', -20.199581,57.777157],
    ['Le Touessrok, Trou d Eau Douce, Mauritius, Africa', -20.253906,57.797150],
    ['One & Only Le Saint Géran, Poste de Flacq, Mauritius ', -20.167420, 57.748791],
    ['SLS Hotel, a Luxury Collection Hotel, Beverly Hills, 465 La Cienega Boulevard, Los Angeles, CA 90048, United States', 34.070124, -118.376919],
    ['The Ritz-Carlton, Naples, 280 Vanderbilt Beach Road, Naples, FL 34108, United States', 26.251983, -81.821339],
    ['Raffles Hotel Le Royal, 92 Rukhak Vithei Daun Penh, Sangkat Wat Phnom, Phnom Phen City, Cambodia', 11.584848, 104.917748],
   ['Fitness Centre at the Westin Bund Center Shanghai China, Shanghai, Huangpu, Henan Middle Road, 88号邮政编码: 200002', 31.234083, 121.490738],
    ['Four Seasons Hotel Hong Kong, 8 Finance Street, Central, Hong Kong', 22.286638, 114.156595],
   ['Shangri-La Hotel, Bangkok, Thailand, Asia', 13.726240, 100.526799],
   ['Sandy Lane, Barbados, Caribbean, Caribbean', 13.175289, -59.631949],
   ['Hotel Weisses Rössl Kitzbühel, Bichlstraße 5, 6370 Kitzbühel, Austria', 47.445422, 12.392272],
    ['Palais Hansen Kempinski Vienna, Schottenring 24, 1010 Wien, Austria', 48.216315, 16.368510],
    ['Buddha Bar Hotel, Paris, France, Europe', 48.869470, 2.320856],
   ['The Gritti Palace, a Luxury Collection Hotel, Venice, Campo Santa Maria del Giglio, 30124 Venice, Italy', 45.434068, 12.334472],
    ['Marbella Club, Avenida Bulevar Príncipe Alfonso de Hohenlohe, s/n, 29602 Marbella, Málaga, Spain', 36.508088, -4.915246],
    ['Belmond La Residencia, Son Canals, s/n, 07179 Deià, Illes Balears, Spain', 39.747939, 2.648374],
    ['The St. Regis Mardavall Mallorca Resort, Carretera Palma-Andratx 19, 07181 Mallorca, Illes Balears, Spain', 39.551222, 2.569334],
    ['Hotel Mirador de Dalt Vila, Plaça d Espanya, 4, 07800 Eivissa, Illes Balears, Spain', 38.907129, 1.437682],
    ['Formentor, a Royal Hideaway Hotel, Carrer Zona Formentor, 07470 Port de Pollença, Illes Balears, Spain', 39.910022, 3.096020],
    ['Jumeirah Carlton Tower, 1 Cadogan Place, London SW1X 9PY, United Kingdom', 51.498340, -0.158965],
    ['Shangri-La Hotel, At The Shard, London, 31 Saint Thomas Street, London SE1 9QU, United Kingdom', 51.504497, -0.158965],
    ['The Ritz London, 150 Piccadilly, London W1J 9BR, United Kingdom', 51.504449, -0.086548],
    ['The May Fair, Stratton Street, London W1J 8LT, United Kingdom',51.507226, -0.143534],
    ['Le Méridien Piccadilly, 21 Piccadilly, London W1J 0BH, United Kingdom',51.509481, -0.136247],
    ['Royal Cres, Bath BA1 2LR, UK',51.387264, -2.368169],
   ['Padstow Townhouse, 16-18 High Street, Padstow PL28 8BB, United Kingdom',50.541948, -4.943169],
    ['One&Only Royal Mirage - Dubai - United Arab Emirates',25.204849, 55.270783],
    ['Burj Al Arab Jumeirah - 3 شارع جميرة - Dubai - United Arab Emirates',25.204849, 55.270783],
    ['Armani Hotel Dubai - Lobby Level,Burj Khalifa,Burj Khalifa Area, Downtown Dubai - Dubai - United Arab Emirates',25.194985, 55.278414],

];

// Info Window Content
var infoWindowContent =[

    ['<div class="info_content">' +
    '<h3>The Lux</h3>' +
    '<p>Belle Mare, Mauritius, Africa</p>' +  

     '</div>'],


    ['<div class="info_content">' +
    '<h3>Le Touessrok</h3>' +
    '<p>Trou d Eau Douce, Mauritius</p>' +  
     '<p> Africa</p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>One & Only Le Saint Géran</h3>' +
    '<p>Poste de Flacq, Mauritius</p>' +  

     '</div>'],

    ['<div class="info_content">' +
    '<h3>SLS Hotel,</h3>' +
    '<p>a Luxury Collection Hotel, Beverly Hills,</p>' + 
     '<p>465 La Cienega Boulevard, Los Angeles,   </p>' + 
     '<p>  CA 90048, United States.  </p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>The Ritz-Carlton,</h3>' +
    '<p> Naples, 280 Vanderbilt Beach Road,</p>' +  
     '<p> Naples, FL 34108, United States </p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>Raffles Hotel Le Royal,</h3>' +
    '<p> 92 Rukhak Vithei Daun Penh, </p>' +  
     '<p>Sangkat Wat Phnom,   </p>' + 
     '<p>Phnom Phen City, Cambodia.  </p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Fitness Centre at the Westin Bund Center Shanghai China,</h3>' +
    '<p> Shanghai, Huangpu,</p>' +  
     '<p> Henan Middle Road,</p>' + 
     '<p> 88号邮政编码: 200002.   </p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Four Seasons Hotel Hong Kong, </h3>' +
    '<p> 8 Finance Street, </p>' +  
     '<p> Central, Hong Kong.</p>' + 

     '</div>'],

     ['<div class="info_content">' +
    '<h3>Shangri-La Hotel,</h3>' +
    '<p>  Bangkok,</p>' +  
     '<p> Thailand, Asia</p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>Sandy Lane,</h3>' +
    '<p>  Barbados, Caribbean,</p>' +  
     '<p>  Caribbean.</p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>Hotel Weisses Rössl Kitzbühel,</h3>' +
    '<p>  Bichlstraße 5, </p>' +  
     '<p>6370 Kitzbühel,   </p>' + 
     '<p>Austria </p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Palais Hansen Kempinski Vienna,</h3>' +
    '<p>  Schottenring 24,  </p>' +  
     '<p>1010 Wien,    </p>' + 
     '<p>Austria </p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Buddha Bar Hotel,</h3>' +
    '<p>  Paris, France, </p>' +  
     '<p> Europe</p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>The Gritti Palace,</h3>' +
    '<p>  a Luxury Collection Hotel, </p>' +  
     '<p> Venice, Campo Santa Maria del Giglio, </p>' + 
     '<p> 30124 Venice, Italy.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Marbella Club, </h3>' +
    '<p>Avenida Bulevar Príncipe Alfonso de Hohenlohe,</p>' +  
     '<p> s/n, 29602 Marbella,  </p>' + 
     '<p>  Málaga, Spain.</p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Belmond La Residencia, </h3>' +
    '<p>Son Canals,</p>' +  
     '<p> s/n, 07179 Deià, </p>' + 
     '<p>  Illes Balears, Spain.</p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Belmond La Residencia, </h3>' +
    '<p>Son Canals,</p>' +  
     '<p> s/n, 07179 Deià, </p>' + 
     '<p>  Illes Balears, Spain.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Hotel Mirador de Dalt Vila,  </h3>' +
    '<p>Plaça d Espanya, 4,</p>' +  
     '<p>  07800 Eivissa, </p>' + 
     '<p>  Illes Balears, Spain.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Formentor, a Royal Hideaway Hotel, </h3>' +
    '<p> Carrer Zona Formentor,</p>' +  
     '<p>  07470 Port de Pollença,</p>' + 
     '<p>   Illes Balears, Spain</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Jumeirah Carlton Tower, </h3>' +
    '<p>  1 Cadogan Place, </p>' +  
     '<p> London SW1X 9PY,</p>' + 
     '<p>  United Kingdom.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>Shangri-La Hotel, </h3>' +
    '<p> At The Shard, London, </p>' +  
     '<p>31 Saint Thomas Street,  </p>' + 
     '<p> London SE1 9QU, United Kingdom.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>The Ritz London, </h3>' +
    '<p> 150 Piccadilly,</p>' +  
     '<p> London W1J 9BR,  </p>' + 
     '<p> United Kingdom.</p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>The May Fair, </h3>' +
    '<p>  Stratton Street, </p>' +  
     '<p> London W1J 8LT,  </p>' + 
     '<p>  United Kingdom.</p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Le Méridien Piccadilly,  </h3>' +
    '<p> 21 Piccadilly, </p>' +  
     '<p> London W1J 0BH,  </p>' + 
     '<p>  United Kingdom.</p>' + 
     '</div>'],

    ['<div class="info_content">' +
    '<h3>Royal Cres,  </h3>' +
    '<p> Bath BA1 2LR, UK </p>' +  
    '</div>'],

    ['<div class="info_content">' +
    '<h3>Padstow Townhouse,  </h3>' +
    '<p> 16-18 High Street, </p>' +  
     '<p>Padstow PL28 8BB,  </p>' + 
     '<p> United Kingdom.</p>' + 
     '</div>'],

     ['<div class="info_content">' +
    '<h3>One&Only Royal Mirage, </h3>' +
    '<p> Dubai,  </p>' +  
     '<p> United Arab Emirates.  </p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>Burj Al Arab Jumeirah , </h3>' +
    '<p>Dubai  </p>' +  
     '<p>United Arab Emirates  </p>' + 

     '</div>'],

    ['<div class="info_content">' +
    '<h3>Armani Hotel Dubai - Lobby Level, </h3>' +
    '<p> Burj Khalifa,Burj Khalifa Area,</p>' +  
     '<p> Downtown Dubai, </p>' + 
     '<p> Dubai, United Arab Emirates </p>' + 
     '</div>'],

];

// Display multiple markers on a map

var infoWindow =   new google.maps.InfoWindow(), marker, i;


// Loop through our array of markers & place each one on the map  
for( i = 0; i < markers.length; i++ ) {
    var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
    var image = 'http://www.luxuryhotelexpert.com/wp-content/uploads/2016/11/map-marker.png';
    bounds.extend(position);
    marker = new google.maps.Marker({
        position: position,
        map: map,
        icon: image,
        title: markers[i][0]
    });

    // Allow each marker to have an info window    
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infoWindow.setContent(infoWindowContent[i][0]);
            infoWindow.open(map, marker);
        }
    })(marker, i));

    // Automatically center the map fitting all markers on the screen
    map.fitBounds(bounds);
}

// Override our map zoom level once our fitBounds function runs (Make sure it only runs once)
var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {
    this.setZoom(2);

    google.maps.event.removeListener(boundsListener);
});

}



    </script>

这是我得到的错误 enter image description here

小提琴 https://jsfiddle.net/coder_303/stmgLdby/

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您有一个“map_wrapper”HTML元素。但是在你的代码中你使用“map_canvas”。这些必须匹配。将一个改为另一个。

这有效,我没有太大改变。

我做了几行评论(比如我没有的图标),随意把它们放回去。

我还将你的四个“威斯敏斯特修道院”项目换成了与标记相匹配的东西

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div id="map_wrapper"></div>
<style>
#map_wrapper {
  height: 300px;
  width: 500px;
  border: 1px solid #666666;
}
</style>
<script>
jQuery(function($) {
  // Asynchronously Load the map API 
  var script = document.createElement('script');
  //script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyCcgSw6pOY1_1t4LpPQK360V0reIfLDOi0&callback=initialize"; 
  script.src = "http://maps.googleapis.com/maps/api/js?callback=initialize"; 
  document.body.appendChild(script);
});
function initialize() {
  var map;
  var bounds = new google.maps.LatLngBounds();
  var mapOptions = {
  maxZoom: 4,
  minZoom: 2,
  navigationControl: false,
  //scrollwheel: false,
  //mapTypeControl: false,
  //draggable: false,
  mapTypeId: 'roadmap',
  styles: [
    {elementType: 'geometry', stylers: [{color: '#F7F7F7'}]},
    {elementType: 'labels.text.stroke', stylers: [{color: '#F7F7F7'}]},
    {elementType: 'labels.text.fill', stylers: [{color: '#746855'}]},
    {
      featureType: 'administrative.locality',
      elementType: 'labels.text.fill',
      stylers: [{color: '#d59563'}]
    },
    {
      featureType: 'poi',
      elementType: 'labels.text.fill',
      stylers: [{color: '#d59563'}]
    },
    {
      featureType: 'poi.park',
      elementType: 'geometry',
      stylers: [{color: '#BCD9E1'}]
    },
    {
      featureType: 'poi.park',
      elementType: 'labels.text.fill',
      stylers: [{color: '#6b9a76'}]
    },
    {
      featureType: 'road',
      elementType: 'geometry',
      stylers: [{color: '#38414e'}]
    },
    {
      featureType: 'road',
      elementType: 'geometry.stroke',
      stylers: [{color: '#212a37'}]
    },
    {
      featureType: 'road',
      elementType: 'labels.text.fill',
      stylers: [{color: '#9ca5b3'}]
    },
    {
      featureType: 'road.highway',
      elementType: 'geometry',
      stylers: [{color: '#b9b9b9'}]
    },
    {
      featureType: 'road.highway',
      elementType: 'geometry.stroke',
      stylers: [{color: '#b9b9b9'}]
    },
    {
      featureType: 'road.highway',
      elementType: 'labels.text.fill',
      stylers: [{color: '#f3d19c'}]
    },
    {
      featureType: 'transit',
      elementType: 'geometry',
      stylers: [{color: '#2f3948'}]
    },
    {
      featureType: 'transit.station',
      elementType: 'labels.text.fill',
      stylers: [{color: '#d59563'}]
    },
    {
      featureType: 'water',
      elementType: 'geometry',
      stylers: [{color: '#BCD9E1'}]
    },
    {
      featureType: 'water',
      elementType: 'labels.text.fill',
      stylers: [{color: '#515c6d'}]
    },
    {
      featureType: 'water',
      elementType: 'labels.text.stroke',
      stylers: [{color: '#BCD9E1'}]
    }
  ]
};

// Display a map on the page
map = new google.maps.Map(document.getElementById("map_wrapper"), mapOptions);
map.setTilt(45);
// Multiple Markers
var markers = [
  ['Capital Tower, ADNEC Complex Abu Dhabi', 24.299174,54.697277],
  ['Regional Office - Dubai - United Arab Emirates', 25.204849,55.270783],
  ['FUJAIRAH', 21.756779, 58.842773],
  ['EGYPT', 28.822859, 26.674805],
  ['lybia', 30.123591, 16.303711],
];
// Info Window Content
var infoWindowContent =[
['<div class="info_content">' +
'<h3>ABU DHABI HEADQUARTERS</h3>' +
'<p>The London Eye is a giant Ferris wheel situated on the banks of the River Thames. The entire structure is 135 metres (443 ft) tall and the wheel has a diameter of 120 metres (394 ft).</p>' +        '</div>'],

['<div class="info_content">' +
'<h3>Regional Office - Dubai</h3>' +
'<p>Regional Office - Dubai - United Arab Emirates ...</p>' +
'</div>'],

['<div class="info_content">' +
'<h3>FUJAIRAH</h3>' +
'<p>FUJAIRAH ... </p>' +
'</div>'],

['<div class="info_content">' +
'<h3>EGYPT</h3>' +
'<p>EGYPT ...</p>' +
'</div>'],

['<div class="info_content">' +
'<h3>lybia</h3>' +
'<p>lybia...</p>' +
'</div>'],
];
// Display multiple markers on a map
var infoWindow =   new google.maps.InfoWindow(), marker, i;
// Loop through our array of markers & place each one on the map  
for( i = 0; i < markers.length; i++ ) {
var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
var image = 'images/map-marker.png';
bounds.extend(position);
marker = new google.maps.Marker({
    position: position,
    map: map,
    // icon: image,
    title: markers[i][0]
});
// Allow each marker to have an info window    
google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
        infoWindow.setContent(infoWindowContent[i][0]);
        infoWindow.open(map, marker);
    }
})(marker, i));
// Automatically center the map fitting all markers on the screen
map.fitBounds(bounds);
}
// Override our map zoom level once our fitBounds function runs (Make sure it only runs once)
var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) {
  this.setZoom(2);
  google.maps.event.removeListener(boundsListener);
});
}
</script>

答案 1 :(得分:0)

您可能需要在Google api manager

中注册此新项目/新申请