gpt4 book ai didi

javascript - 使用 maps api v3 获取间歇性 'google not defined' 和其他错误

转载 作者:行者123 更新时间:2023-11-30 12:01:36 24 4
gpt4 key购买 nike

我的应用程序对人口普查进行 API 调用,并将该数据与 Google Maps API v3 结合使用。它大部分时间都按预期工作,但我收到间歇性错误“Initmap 未定义”、“google 未定义”或“TypeError:map.data.getFeatureById(...) 未定义”没有任何明显的原因。 HTML:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

<script src="https://maps.googleapis.com/maps/api/js?v=3&key=KEY1234&callback=initMap" async defer
></script>
<script src="js/mapfunc.js"></script>
</head>
<body>
<div id="map"></div>
<script>var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: 35, lng: -106}
});
}</script>

</body>

</html>

JS:

function loadMapShapes() {
map.data.loadGeoJson('jsonya2.geojson', { idPropertyName: 'STATE' });
variable = 'B01003_001E,NAME';
variable2 = ',B01001F_002E';
loadCensusData(variable);

}

function loadCensusData(variable) {
// load the requested variable from the census API
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://api.census.gov/data/2014/acs5/?get=' +
variable + '&for=state:*&key=KEY123');
xhr.onload = function() {
var censusData = JSON.parse(xhr.responseText);
censusData.shift(); // the first row contains column names

censusData.forEach(function(row) {
censusMin = 0;
censusMax = 36000000;
var censusVariable = parseFloat(row[0]);
var stateName = row[1];

var stateId = row[2];
// keep track of min and max values
if (censusVariable < censusMin) {
censusMin = censusVariable;
}
if (censusVariable > censusMax) {
censusMax = censusVariable;
}
// update the existing row with the new data
coolid = map.data.getFeatureById(stateId);// <-- Here's where
//I get the error most often: "TypeError: map.data.getFeatureById(...) is undefined"
if (coolid !== undefined) {
map.data
.getFeatureById(stateId)
.setProperty('census_variable', censusVariable);

map.data
.getFeatureById(stateId)
.setProperty('census_variable1', stateName);
}
coolstate = map.data.getFeatureById(stateName);


});

同样 - 此代码可能有 40% 的时间有效,其余时间会抛出上述错误之一。我可能会注意到一天中错误的增加,但不能确定。

非常感谢您的想法,这里是此代码的实时版本的链接,其中包含人口普查和谷歌地图 API 调用: http://dukecitydigital.com/c1/

最佳答案

loadGeoJson 异步运行,使用 loadGeoJson 的回调来执行更多取决于 loadGeoJson 结果的函数:

function loadMapShapes() {
variable = 'B01003_001E,NAME';
variable2 = ',B01001F_002E';

map.data.loadGeoJson('jsonya2.geojson', { idPropertyName:'STATE'}, function(){
loadCensusData(variable);
});
}

关于javascript - 使用 maps api v3 获取间歇性 'google not defined' 和其他错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36493435/

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