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

标签 javascript json google-maps google-maps-api-3 google-api-javascript-client

在使用 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/

相关文章:

javascript - 访问对象 ID 的更短方法?

java - JSONObject 不会在 toString() 中转换对象属性

javascript - 未捕获的引用错误 : Gmaps. js 错误?

javascript - 在 onload 事件上加载谷歌地图仍然会在页面加载后给出加载它的灯塔消息

javascript - Ruby IDE 中的断点?

javascript - 从数组中随机选择唯一项目并添加到新数组的问题

javascript - 使用 AJAX post 将对象数组发送到服务器端

javascript - 无法获取Web api json响应的内容,返回空白

javascript - 使用 javascript 从数组路径中获取树结构

javascript - Google map 地点 javascript 文本搜索 : can't get radius to work