gpt4 book ai didi

javascript - Google map V3 - 出现错误 google 未定义

转载 作者:行者123 更新时间:2023-12-03 05:26:50 24 4
gpt4 key购买 nike

让我们首先从谷歌地图代码开始:

var map;

function initialize() {
var mapOptions = {
center: new google.maps.LatLng(52.4357808, 4.991315699999973),
zoom: 2,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
}

var seg = {
1: 'invesCastProd',
2: 'forged',
3: 'airframe',
5: 'corp',
6: 'structurals'
}

var comp = {
1: 'structurals',
2: 'airfoils',
3: 'airfoils',
4: 'wyman',
5: 'energy',
6: 'strucComp',
7: 'mechHard',
8: 'engineProd',
9: 'corp',
10: 'aero',
12: 'timet',
13: 'specMetals'
}

var myJSON = {};
var myMarkers=[];

$.getJSON("/pcc-common/static/pcc-locations.json", function(json1) {
myJSON=json1;
$.each(json1, function(key, data) {
var latLng = new google.maps.LatLng(data.latitude, data.longitude);
// Creating a marker and putting it on the map
var marker = new google.maps.Marker({
position: latLng
});
myMarkers[key]=marker;
marker.setMap(map);

var infoWindow = new google.maps.InfoWindow();

google.maps.event.addListener(marker, 'click', function() {

if (infoWindow) {infoWindow.close();}
infoWindow = new google.maps.InfoWindow({
content: "<h5>" + data.display_name + "</h5>" +
"<div>" + data.street+ "</div>" +
"<div>" + data.city + ", " + data.state + " &nbsp; " + data.postal_code + "</div>" +
"<div class='mapPhoneNum'>" + data.telephone + "</div>" +
"<a href=" + data.web_url + ">Website</a>"
});
infoWindow.open(map, marker);
map.setZoom(15);
map.panTo(this.getPosition());

google.maps.event.addListener(infoWindow,'closeclick',function(){
resetMapOrigin();
});

});

filterMarkers = function(category){

var component = category.data("component_id");
var segment = category.data("segment_id")

setMapOnAll(null);
resetMapOrigin();

var filteredMarkers=[];

$.each(myJSON, function(key, data) {


if( typeof(component)!="undefined" ){

if( (myJSON[key].component_id == component) && (myJSON[key].segment_id == segment) ){
filteredMarkers.push(key);
}

}else{
if( myJSON[key].segment_id == segment ){
filteredMarkers.push(key);
}
}
});

for(i=0;i<filteredMarkers.length;i++){
myMarkers[filteredMarkers[i]].setMap(map);
}
}

function setMapOnAll(map) {
for (var i = 0; i < myMarkers.length; i++) {
myMarkers[i].setMap(map);
}
}

function resetMapOrigin(){
map.setZoom(2);
map.setCenter({lat:52.4357808,lng:4.991315699999973});
}
});

});

这是 html 中的初始化脚本:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyAMNhLC5984PO876GF8nesnOqbiKkblvuBo&callback=initialize" async defer></script>

所以有时你打开网站,它会很好地加载所有引脚。您单击“刷新”,它会再次加载所有引脚。单击刷新,它会再次加载。再次点击刷新,它会抛出错误 Uncaught ReferenceError: google is not Defined(...)。而且你可以刷新多次,仍然会抛出错误。然后突然单击刷新,它将加载所有引脚,没有错误。所以基本上有时它会起作用,有时它会给我一个错误。

我不明白发生了什么或者为什么要这样做。

出错的行是 var latLng = new google.maps.LatLng(data.latitude, data.longitude); (显然因为这是第一个“google”调用) .

谁能告诉我为什么要这样做?

顺便说一句,这是在开发服务器上,所以它不是在线的。但它有时会起作用,有时又会给我一个错误。

感谢您的帮助!

最佳答案

所有使用 Google Maps SDK 的代码都需要在 initialize 函数中执行。在您的示例中,您的 JSON 可能会在 Google map 之前加载,这就是您有时会收到错误的原因。

一种解决方案是将 $.getJSON 的回调移至单独的函数,然后在 map 初始化后触发请求。

function initialize() {
var mapOptions = {
center: new google.maps.LatLng(52.4357808, 4.991315699999973),
zoom: 2,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
// Fetch locations from the server
$.getJSON("/pcc-common/static/pcc-locations.json", onLocationsFetched)
}

function onLocationsFetched(json) {
myJSON=json1;
$.each(json1, function(key, data) {
...

关于javascript - Google map V3 - 出现错误 google 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41111532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com