Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 谷歌地图API V3:热图创建问题_Google Maps_Google Maps Api 3_Heatmap - Fatal编程技术网

Google maps 谷歌地图API V3:热图创建问题

Google maps 谷歌地图API V3:热图创建问题,google-maps,google-maps-api-3,heatmap,Google Maps,Google Maps Api 3,Heatmap,我正在尝试使用google.maps.visualization库。我已经在我的代码中包含了这个库以及所有的东西,而且大部分看起来都在工作,但是当我开始创建热图时,我得到了一个关于“位置96677:[对象]处的无效值”的错误。我不确定这个问题是关于什么的,但错误报告包含一行Google API代码: var c; M(b,function(b,e){ try{ a(b)||(c="Invalid value at position "+(e+(": "+b)))

我正在尝试使用google.maps.visualization库。我已经在我的代码中包含了这个库以及所有的东西,而且大部分看起来都在工作,但是当我开始创建热图时,我得到了一个关于“位置96677:[对象]处的无效值”的错误。我不确定这个问题是关于什么的,但错误报告包含一行Google API代码:

var c;
M(b,function(b,e){
    try{
        a(b)||(c="Invalid value at position "+(e+(": "+b)))
    }catch(f){
        c="Error in element at position "+(e+(": ("+(f[Pb]+")")))}});c&&aa(ja(c));return j
    }
}
我浏览了一下API代码,但很难在其中找到任何有用的东西。我用于创建热图层的代码如下所示:

$.ajax({
    url: "../Yield/getYieldData.php",
    success: function(text) {
        var data;
//      var yieldPoints = new google.maps.MVCArray();
        var yieldPoints = [];

        try{
            data = $.parseJSON(text);
        } catch (e) {
            alert("ERROR: " + e);
        }

        for(i=0; i < data.points.length; i++) {
//          yieldPoints.push({ location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon), weight: data.points[i].yield });
            yieldPoints[i] = { location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon), weight: data.points[i].yield };
        }
        var heatMap = new google.maps.visualization.HeatmapLayer({ data: yieldPoints });
        heatMap.setMap(map);
    }
});
$.ajax({
url:“../Yield/getYieldData.php”,
成功:函数(文本){
var数据;
//var yieldPoints=new google.maps.MVCArray();
var yieldPoints=[];
试一试{
数据=$.parseJSON(文本);
}捕获(e){
警报(“错误:+e”);
}
对于(i=0;i
我不确定问题是从哪里来的,但我使用了GoogleAPI文档作为模板,如在(页面下方大约三分之一的地方,标题是“添加加权数据点”)。如您所见,我还尝试将数组创建为MVCArray,如文档中所述,但这并没有改变任何事情。如果相关,下面是从“getYieldData.php”调用接收的JSON数据的一个简短示例:

{“points”:[{“lat”:“38.1513366000”,“lon”:-97.4341659000”,“yield”:“0”},{“lat”:“38.1513748000”,“lon”:-97.4341125000”,“yield”:“0”;{“lat”:“38.1513938000”,“lon”:-97.4341125000”,“yield”:“0”;“{“lat“-97.4339447000”,“收益率”:“0”},{“lat”:“38.1483650000”,“lon”:“-97.4358291000”,“收益率”:“0”},{“lat”:“38.1484031000”,“lon”:“-97.4358062000”,“收益率”:“0”},


希望这些信息足以让某人了解问题所在-任何帮助都将不胜感激。谢谢。

weight
应该是一个
数字,而不是
字符串。因此您有两个选择:

  • 避免在JSON中使用引号:

    {"lat":"38.1513366000","lon":"-97.4341659000","yield":0}
                  //no quote wraps    'yield' ------------^
    
  • 产量
    转换为
    数量

    yieldPoints[i] = { 
               location: new google.maps.LatLng(data.points[i].lat, data.points[i].lon),
               weight: +data.points[i].yield };
    };                 ^----- plus('+') is the fastest way for converting string to number           
    

快速更新:我尝试删除数组的最后一个元素,但在位置96676处出现了相同的错误,因此显然它正在反向遍历数组,并发现元素总体上存在问题。谢谢-这就是问题所在。我使用了parseFloat()不是“+”而是我在速度方面会受到多大的影响?@Crash我想,在你的情况下,速度差异是不够明显的。所以
parseFloat
也很合适。@Engineer嘿,我遇到了这个奇怪的问题。对于我的第一个热图,权重是字符串,热图有效。然后对于我的第二个热图,热图只有当权重为字符串时才有效。当我将其转换为数字时,热图不会显示。但是,对于第二个热图,“热”以某种方式显示为正方形,并且与我设置的梯度不起作用。你有什么想法吗?@hyperfkcb确保你将有效的数字字符串转换为数字,否则你将得到NaN、undefined或null