Javascript 我们在不同的页面上使用三种不同的地图,它在Chrome中工作,但是?
在我的网站上,我们在两个不同的页面中使用了三个不同的地图(第一个在标题中使用)。 在我看来,我无法让它发挥作用。 因此,目前三分之二的地图正在工作。 这是我正在使用的代码:Javascript 我们在不同的页面上使用三种不同的地图,它在Chrome中工作,但是?,javascript,google-maps,Javascript,Google Maps,在我的网站上,我们在两个不同的页面中使用了三个不同的地图(第一个在标题中使用)。 在我看来,我无法让它发挥作用。 因此,目前三分之二的地图正在工作。 这是我正在使用的代码: <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ICLEI</title
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ICLEI</title>
<link rel="stylesheet" href="{{ asset('css/main.css') }}">
<link rel="stylesheet" href="{{ asset('css/selection.css') }}">
<link href="https://fonts.googleapis.com/css?family=Hind:300,400,500,600,700" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Cairo:400,200,300,600,700,900' rel='stylesheet' type='text/css'>
<link href="//cdn-images.mailchimp.com/embedcode/slim-10_7.css" rel="stylesheet" type="text/css">
<script src="https://maps.googleapis.com/maps/api/js?key={{YOUR-API-KEY}}&callback=initMap"
async defer></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" defer></script>
<script type="text/javascript">window.jQuery || document.write('<script src="{{ asset('js/jquery-1.11.2.min.js') }}"><\/script>')</script>
<script type="text/javascript" src="{{ asset('js/jquery.main.js') }}" defer></script>
<script src="https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-2790248-3"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-2790248-3');
</script>
<script>
var locations = [{
lat: 37.4,
lng: 128.4,
"government_local_name": "\ud3c9\ucc3d\uad70",
"city": "Pyeongchang County",
"country": "Republic of Korea",
"website": "eng.pc.go.kr"
},
{
lat: 10.5,
lng: 122.43,
"government_local_name": "Bayan ng Dumangas",
"city": "Dumangas",
"country": "Philippines",
"website": null
}];
var image = '{{ asset('images/marker-office.png') }}';
function initMap() {
var options = { imagePath: '{{ asset('images/m') }}'};
var map = new google.maps.Map(
document.getElementById('map1'), {
zoom: 2,
center: {lat: 50.7374, lng: 7.0982},
}
);
var markers = locations.map(function(location, i) {
return new google.maps.Marker({
position: location,
icon: image
});
});
var activeInfoWindow;
markers.forEach(function(marker, i) {
if(!locations[i].government_local_name){} else {
government = locations[i].government_local_name;
}
if(!locations[i].city){} else {
city = locations[i].city;
}
if(!locations[i].country) {} else {
country = locations[i].country;
}
if(!locations[i].website){} else {
website = locations[i].website;
}
var infowindow = new google.maps.InfoWindow({
content: "<p>"+ government +"</p>" +
"<p>"+ city +"</p>" +
"<p>"+ country +"</p>" +
"<p>"+ website +"</p>"
});
marker.addListener('click', function() {
if (activeInfoWindow === infowindow) {
return;
}
if (activeInfoWindow) {
activeInfoWindow.close();
}
infowindow.open(map, this);
activeInfoWindow = infowindow;
});
});
var markerCluster = new MarkerClusterer(map, markers, options);
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key={{YOUR-API-KEY}}&callback=initMap"
async defer></script>
</head>
伊利
window.jQuery | | document.write(“”)
window.dataLayer=window.dataLayer | |[];
函数gtag(){dataLayer.push(参数);}
gtag('js',新日期());
gtag(“配置”、“UA-2790248-3”);
变量位置=[{
拉脱维亚:37.4,
液化天然气:128.4,
“政府\地方\名称”:“\ud3c9\ucc3d\uad70”,
“城市”:“平昌县”,
“国家”:“大韩民国”,
“网站”:“eng.pc.go.kr”
},
{
纬度:10.5,
液化天然气:122.43,
“政府、地方名称”:“巴彦、杜曼加斯”,
“城市”:“杜曼加斯”,
“国家”:“菲律宾”,
“网站”:空
}];
var image={{asset('images/marker office.png')}};
函数initMap(){
var options={imagePath:'{{asset('images/m')}}};
var map=new google.maps.map(
document.getElementById('map1'){
缩放:2,
中心:{lat:50.7374,lng:7.0982},
}
);
var markers=locations.map(函数(位置,i){
返回新的google.maps.Marker({
位置:位置,,
图标:图像
});
});
var-activeInfoWindow;
markers.forEach(函数(marker,i){
如果(!locations[i].政府\本地\名称){}其他{
政府=地点[i]。政府\当地\名称;
}
如果(!locations[i].city){}else{
城市=地点[i]。城市;
}
如果(!locations[i].country){}else{
国家=地点[i]。国家;
}
如果(!locations[i].website){}else{
网站=位置[i]。网站;
}
var infowindow=new google.maps.infowindow({
内容:“”+政府+“”+
“”+城市+“”+
“”+国家+“”+
“”+网站+“”
});
marker.addListener('click',function()){
如果(activeInfoWindow==infowindow){
回来
}
如果(activeInfoWindow){
activeInfoWindow.close();
}
打开(地图,这个);
activeInfoWindow=infowindow;
});
});
var markerCluster=新的MarkerClusterer(映射、标记、选项);
}
只要有人能看到我在这里使用的两个脚本与地图。
有了这段代码,一切都可以在chrome中运行,但在Mozzila中无法运行(谢天谢地,我只支持这两种浏览器)。应该显示在每一页上的地图根本不起作用。这是mozzila控制台中显示的错误:
未捕获异常:InvalidValueError:initMap不是函数
您已经多次将Google Maps JavaScript API包含在
这一页。这可能会导致意外错误
这是我在Chrome上遇到的控制台错误:
未捕获Ob{消息:“initMap不是函数”,名称:“InvalidValueError”,堆栈:“Error”↵ 在新Ob(…kLEDNWcj0IwFZ_Io84oExuE8g&callback=initMap:162:56“}
但是所有的东西都显示在Chrome上,Mozzila缺少一张地图。
其他人能给我一个解决方案吗
更新:
如果你问自己为什么我要调用api两次。因为如果我只从顶部调用它一次,那么两个浏览器都会丢失两个映射。我相信这与调用函数有关,因为在一个浏览器中(阅读Mozilla)如果从顶部调用maps api,它就会调用它;在Chrome中,如果从底部调用api,它就会工作。
如果我把它放进去一次,那么在相应的浏览器中,它会说它错过了InitMap。我需要添加到maps和jquery.main.js以及analytics中的所有内容都是 推迟 在脚本标记的末尾。 对于那些问自己为什么会这样的人来说,这是因为(根据我的研究)google.maps和google.analytics共享一些库和数据
它的作用是在页面和其他所有内容加载后加载javascript(CSS和其他javascript),并分别调用两个库(分析和映射).为什么要调用api两次?Algo,只是检查一下,我想你在粘贴代码时删除了api密钥,对吗?是的,我删除了密钥是因为我们的客户向我们提供了密钥。查看问题编辑部分以获得第一个问题的答案。因此,在本页中,你有两个映射,一个在标题中,另一个在正文中哪一个再次调用api?不,我们在页眉中使用了一次,在正文中使用了两次。对不起。也许你可以访问iclei.org,在global和iclei.org/en/our_network.html和iclei.org/en/members-search.htmlSorry下查看它,因为我的问题不够清楚。