当使用Google Maps API在地图上合并数据时,我使用了本地PHP文件,该文件返回的JSON结果与通过myjson等网站通过托管在线存储的结果相同。但是,我无法按需使用本地PHP文件(这意味着如果我更新数据库,它将返回动态JSON文件)并出现错误。
此页面上有一个类似的示例,该示例也使用托管的静态JSON文件,但不使用通过PHP文件使用PHP查询返回的JSON文件,因为我希望它是
此外,此功能(https://developers.google.com/maps/documentation/javascript/reference/data#Data.getFeatureById)也无济于事,因为该功能确实存在于集合中
function showStation(crimeType) {
var map;
map = new google.maps.Map(document.getElementById('map'),{
zoom:9,
center: {lat: 32.815939, lng: 73.305297}
});
map.data.loadGeoJson('stations.js', { idPropertyName: 'name' });
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.myjson.com/bins/1e0rkl', true); //works
//xhr.open('GET', './data/stationdata.php', true); //does not work
xhr.onload = function() {
var crimeData = JSON.parse(xhr.responseText);
crimeData.forEach(function(row){ //line 170
var crimeVariable = row[crimeType];
console.log(crimeVariable);
var stationName = row.stationName;
console.log(stationName);
console.log(map.data.getFeatureById(stationName)); //error1
map.data.getFeatureById(stationName). //Line 180
setProperty(crimeType, crimeVariable); //error2
});
}
xhr.send();
map.data.setStyle(styleFeature);
}
我收到错误:// error1和// error2未定义,我得到:
Uncaught TypeError: Cannot read property 'setProperty' of undefined at functions2.js:180 at Array.forEach (<anonymous>) at XMLHttpRequest.xhr.onload (functions2.js:170)
这是stationdata.php的响应:
[{"stationName":"PS Chotala","murder":"0.5238"},{"stationName":"PS City","murder":"0.6984"},{"stationName":"PS Civil Lines","murder":"0.5238"},{"stationName":"PS Dina","murder":"0.6984"},{"stationName":"PS Domeli","murder":"1.2222"},{"stationName":"PS Jalalpur Sharif","murder":"0.8730"},{"stationName":"PS Lilla","murder":"0.7857"},{"stationName":"PS Mangla Cantt","murder":"1.1349"},{"stationName":"PS Pind Dadan Khan","murder":"0.6984"},{"stationName":"PS Saddar","murder":"0.6984"},{"stationName":"PS Sohawa","murder":"3.1429"}]
您的row
变量似乎为空或缺少必需的属性/数组键。
您没有共享应用程序的PHP部分,也没有共享文件夹/文件结构,因此很难确定错误本身。
您确定从中获得良好的响应代码'./data/stationdata.php'
吗?您可以检查浏览器的“网络”选项卡以查看XHR请求是否返回错误代码,例如400、500、401。
另一方面,如果您获得了良好的响应代码,则您的JSON编码可能有错误,或者您的PHP文件中缺少JSON标头。
您可以在此处找到带有JSON标头的示例:从PHP脚本返回JSON
编辑:正如我在评论部分中提到的,这也可能是时间问题。可以将回调函数附加到gmaps脚本标签,该标签在完全加载后将访问您的自定义javascript。https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句