在使用 Google Maps API 合并 map 上的数据时,我使用本地 PHP 文件返回相同的 JSON 结果,我使用 myjson 等网站通过托管在线存储该结果。但是,我无法按需要使用本地 PHP 文件(这意味着如果我更新数据库,它会返回一个动态 JSON 文件)并出现错误。
在 this page 有一个类似的例子它也使用托管的静态 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);
}
我得到错误:undefined for//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 header 。
您可以在此处找到带有 JSON header 的示例: Returning JSON from a PHP Script
编辑:正如我在评论部分提到的,这也可能是一个时间问题。可以将回调函数附加到 gmaps 脚本标记,该标记将在完全加载后访问您的自定义 javascript。 https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
关于javascript - 如何在 Google Maps API 中使用从本地 PHP 文件返回的 JSON 数据而不是在线托管的 JSON 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57270239/