是否可以在同一网站的多个页面上使用Google Maps API?

时间:2014-10-02 17:38:34

标签: javascript api maps

我想在同一个网站上使用三个地图,一个在两个页面上,另一个在另一个页面上。我可以让一个页面工作而不是另一个页面,它往往是我选择在window.onload函数中执行的第一个页面。所以我知道我的代码中没有问题,因为我可以让它们全部工作,而不是同时进行。我唯一能想到的是,也许是因为我在每个页面上使用相同的API密钥?如果是这样,我如何获得单独的密钥?这是我的代码:

///////////////////////////////////////////////////////////// Google Maps
function scaligeroMap() {
var scaligeroLocation = new google.maps.LatLng(45.766281, 10.8088879);

var mapOptions = {
  'center' : scaligeroLocation,
  'zoom' : 17,
};

var map = new google.maps.Map(document.getElementById('scaligeroMap'), mapOptions);
var marker = new google.maps.Marker({
        'position' : scaligeroLocation,
        'map' : map,
        'title' : 'Castello Scaligero'
    });

//////////////////////////////////////////////Pop up containing address when marker is clicked
var popupContent = 'Castello Malcesine:<br>';
popupContent += 'Via Castello Scaligero, 39<br>';
popupContent += '37018 Malcesine Verona<br>';
popupContent += 'Italy';

var infowindow = new google.maps.InfoWindow({
  content: popupContent,
  maxWidth: 200
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});

}

function alCorsaroMap() {
var alCorsaroLocation = new google.maps.LatLng(45.7658856, 10.8099179);

var mapOptions = {
  'center' : alCorsaroLocation,
  'zoom' : 17,
};

var map = new google.maps.Map(document.getElementById('alCorsaroMap'), mapOptions);
var marker = new google.maps.Marker({
        'position' : alCorsaroLocation,
        'map' : map,
        'title' : 'Al Corsaro'
    });

//////////////////////////////////////////////Pop up containing address when marker is clicked
var popupContent = 'Ristorante Al Corsaro:<br>';
popupContent += 'Via Paina, 17<br>';
popupContent += '37018 Malcesine Verona<br>';
popupContent += 'Italy';

var infowindow = new google.maps.InfoWindow({
  content: popupContent,
  maxWidth: 200
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});

}

function oasiMap() {
var oasiLocation = new google.maps.LatLng(45.80406, 10.842993);

var mapOptions = {
  'center' : oasiLocation,
  'zoom' : 17,
};

var map = new google.maps.Map(document.getElementById('oasiMap'), mapOptions);
var marker = new google.maps.Marker({
        'position' : oasiLocation,
        'map' : map,
        'title' : 'Oasi Bar'
    });

//////////////////////////////////////////////Pop up containing address when marker is clicked
var popupContent = 'Hotel Oasi Beach:<br>';
popupContent += 'Via Gardesana, 510<br>';
popupContent += '37018 Malcesine Verona<br>';
popupContent += 'Italy';

var infowindow = new google.maps.InfoWindow({
  content: popupContent,
  maxWidth: 200
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});

}


window.onload = function() {
scaligeroMap();
alCorsaroMap();
oasiMap();
};

所以使用这段代码scaligeroMap();显示在使用它的页面上,但alCorsaroMap();和oasiMap();不显示在单独页面上的内容。如果我把scaligeroMap();在底部,以便它最后执行alCorsaroMap(); &安培; oasiMap(); scaligeroMap();韩元&#39;吨。如何制作以便全部显示?

1 个答案:

答案 0 :(得分:1)

在尝试在该页面上不存在的元素上运行代码之前,您需要检查map元素是否存在。

您可以在window.onload函数上执行此操作:

var scaligeroMapElement =  document.getElementById('scaligeroMap');
if (typeof(scaligeroMapElement) != 'undefined' && scaligeroMapElement != null)
{
    scaligeroMap();
}

var alCorsaroMapElement =  document.getElementById('alCorsaroMap');
if (typeof(alCorsaroMapElement) != 'undefined' && alCorsaroMapElement != null)
{
    alCorsaroMap();
}

var oasiMapElement =  document.getElementById('oasiMap');
if (typeof(oasiMapElement) != 'undefined' && oasiMapElement != null)
{
    oasiMap();
}

这假设您的每张地图都有不同的ID。

如果你有jQuery,你可以这样做:

if ($('#alCorsaroMap').length > 0) {
    oasiMap();
}