4

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);
    }
});

ここで問題がどこから発生しているのかはわかりませんが、https://developers.google.com/maps/documentation/javascript/layers#JSHeatMapsにある Google API ドキュメントをテンプレートとして使用しました(約 3 分の 1ページの下の方にある「加重データ ポイントの追加」という見出しの下)。ご覧のとおり、そのドキュメントで説明されているように、配列を 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"},

うまくいけば、これは誰かが問題が何であるかを理解するのに十分な情報です-どんな助けでも大歓迎です. ありがとうございました。

4

1 に答える 1

6

weightNumberではなく、 である必要がありStringます。したがって、2 つの選択肢があります。

  • JSON で引用符を避ける:

    {"lat":"38.1513366000","lon":"-97.4341659000","yield":0}
                  //no quote wraps    'yield' ------------^
    
  • yieldにキャストNumber:

    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           
    
于 2012-07-02T18:15:28.323 に答える