google-maps - 谷歌地图 API v 3 : Heatmap Creation Issue

标签 google-maps google-maps-api-3 heatmap

我正在尝试使用 google.maps.visualization 库。我已经在我的代码中包含了这个库,而且大部分似乎都在工作,但是当我开始创建热图时,我收到一个关于“位置 96677 的值无效:[object Object]”的错误.我不确定这个问题是什么,但错误报告包含一行 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);
    }
});

我不确定问题出在哪里,但我使用了 Google API 文档作为模板,如 https://developers.google.com/maps/documentation/javascript/layers#JSHeatMaps 所示。 (大约在页面下方的三分之一处,在“添加加权数据点”标题下)。如您所见,我还尝试将数组创建为 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":"38.1493263000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1493339000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1493377000","lon":"-97.4339447000","yield":"0"},{"lat":"38.1483650000","lon":"-97.4358291000","yield":"0"},{"lat":"38.1484031000","lon":"-97.4358062000","yield":"0"},
希望这是足以让某人看到问题所在的信息 - 任何帮助都将不胜感激。谢谢你。

最佳答案

weight应该是 Number ,不是 String .所以你有2个选择:

  • 避免 JSON 中的引号:
    {"lat":"38.1513366000","lon":"-97.4341659000","yield":0}
                  //no quote wraps    'yield' ------------^
    
  • Actor yieldNumber :
    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           
    
  • 关于google-maps - 谷歌地图 API v 3 : Heatmap Creation Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296510/

    相关文章:

    r - R : Legend size and creating a square plot 中的 pheatmap 格式

    java - 如何在 Android 上将点绘制到谷歌地图中?

    google-maps - 谷歌地图搜索框FOUC

    javascript - 如何在谷歌地图API中创建多个信息窗口

    javascript - 在 jsdom 中加载 Google Maps API

    google-maps - 未捕获的 InvalidValueError : not a Feature or FeatureCollection

    python - Jupiter Python seaborn 热图未显示所有相关性

    r - 在Heatmap.2中设置距离矩阵和聚类方法

    iphone - 使用 MKMapView 连续缩放?

    javascript - 通过 map 标记导航到react-router URL