1

在使用 Google Maps API 组合地图上的数据时,我使用了一个本地 PHP 文件,该文件返回相同的 JSON 结果,我使用 myjson 之类的网站通过托管在线存储该结果。但是,我不能随意使用本地 PHP 文件(这意味着如果我更新数据库,它会返回一个动态 JSON 文件)并出现错误。

此页面上有一个类似的示例,它也使用托管的静态 JSON 文件,但不是使用 PHP 查询返回的 JSON 文件,使用 PHP 文件,因为我希望它是

此外,此(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"}] 
4

2 回答 2

1

row您的变量似乎为空或缺少必需的属性/数组键。

您没有共享应用程序的 PHP 部分,也没有共享文件夹/文件结构,因此很难确定错误本身。

你确定你得到了一个好的响应代码'./data/stationdata.php'吗?您可以检查您的浏览器网络选项卡以查看 XHR 请求是否返回错误代码,例如 400、500、401。

另一方面,如果您获得了良好的响应代码,则您的 JSON 编码可能有问题,或者您的 PHP 文件中缺少 JSON 标头。

您可以在此处找到带有 JSON 标头的示例: Returning JSON from a PHP Script

编辑:正如我在评论部分提到的,这也可能是时间问题。可以将回调函数附加到 gmaps 脚本标记,一旦完全加载,它将访问您的自定义 javascript。 https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API

于 2019-07-30T11:43:43.643 回答
0

似乎 themap.data.getFeatureById(stationName)或其中一个在 stationName中不可用map.datamap.data未定义。

于 2019-07-30T11:52:58.960 回答