0

単純なjsonデータファイルを読み込もうとしています。しかし、「Uncaught TypeError:Undefinedのプロパティ'lat'を読み取れません」というエラーが発生し続けます。理由はわかりません。私はjsonファイルの構造を変更するために何度も試みましたが、役に立ちませんでした。どんな援助も歓迎されます。

for (var i = 0; i < 1000; i++) {
    var dataCoal = data.coal[i];

    // Creating a random position
    var latLng = new google.maps.LatLng(dataCoal.lat,dataCoal.lon);


    //Uncaught TypeError: Cannot read property 'lat' of undefined


    // Creating a marker. Note that we don't add it to the map
    var marker = new google.maps.Marker({
      position: latLng
    });

    // Adding the marker to the markers array
    markers.push(marker);

  }

これはJSONファイルの1つのエントリです

var data = { "coal": [{"NAME":"Haju Coal","Metals":"Coal","Lat":-0.11667,"Lon":114.85,"Accuracy":"approximate","DevStage":"Preproduction","ActStatus":"Temporarily On Hold","Company":"BHP Billiton Group","InSitu":700,"Metals_ft_style":0,"Accuracy_ft_style":0,"DevStage_ft_style":0,"ActStatus_ft_style":0}]}
4

2 に答える 2

0

最良の方法は、PHP の foreach のように data.coal を反復処理することだと思います。

var coal;
for (var index in data.coal) {

  if (data.coal.hasOwnProperty(index)) {
    coal = data.coal[index];

    var latLng = new google.maps.LatLng(coal.Lat, coal.Lon);

    // ...

  }
}
于 2012-11-12T08:50:58.447 に答える
0

ループの終わりを示す何かが必要です。

for (var i = 0; i < 1; i++) {

それ以外にエラーがあるのはlatlon小文字であることだけです

var latLng = new google.maps.LatLng(dataCoal.Lat,dataCoal.Lon);

トリックを行う必要があります

だからそれは次のように見えるはずです

var data = { "coal": [{"NAME":"Haju Coal","Metals":"Coal","Lat":-0.11667,"Lon":114.85,"Accuracy":"approximate","DevStage":"Preproduction","ActStatus":"Temporarily On Hold","Company":"BHP Billiton Group","InSitu":700,"Metals_ft_style":0,"Accuracy_ft_style":0,"DevStage_ft_style":0,"ActStatus_ft_style":0}]}
for (var i = 0; data.length < 1000; i++) {
    var dataCoal = data.coal[i];

    // Creating a random position
    var latLng = new google.maps.LatLng(dataCoal.Lat, dataCoal.Lon);

    //Uncaught TypeError: Cannot read property 'lat' of undefined


    // Creating a marker. Note that we don't add it to the map
    var marker = new google.maps.Marker({
      position: latLng
    });

    // Adding the marker to the markers array
    markers.push(marker);

}

</p>

于 2012-11-12T03:38:06.380 に答える