如何在 Google 地图 API 中使用从本地 PHP 文件返回的 JSON 数据,而不是在线托管的 JSON 文件?

How to use JSON data returned from a local PHP file in Google Maps API instead of an online hosted JSON file?

在使用 Google 地图 API 合并地图上的数据时,我使用本地 PHP 文件,该文件 returns 与我的 JSON 结果相同使用像 myjson 这样的网站通过托管在线存储。但是,我无法按需要使用本地 PHP 文件(如果我更新数据库,这意味着它 returns 是一个动态 JSON 文件)并出现错误。

this page 中有一个类似的示例,它也使用了托管静态 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);

} 

我得到错误:对于 //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 变量似乎为空或缺少必需的 attributes/array 键。

您没有共享应用程序的 PHP 部分,也没有共享 folder/file 结构,因此很难查明错误本身。

您确定您从 './data/stationdata.php' 获得了正确的响应代码吗? 您可以检查浏览器的网络选项卡,看看 XHR 是否请求 returns 错误代码,如 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

似乎 map.data.getFeatureById(stationName)stationNamemap.data 中不可用,或者 map.data 未定义。