2016-08-18 8 views
-2

Google Maps APIとAngularJS(1.5.8)で作業しています。ループでマーカーを作成した後、後でそれらにアクセスすることはできません。 initMap関数内このコード:ループ後にアレイにアクセスできないのはなぜですか?

var markers = []; 

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

    var html = $scope.posts[i].address; 

    var marker = new google.maps.Marker({ 
     map: map, 
     position: {lat: parseFloat($scope.posts[i].lat), lng: parseFloat($scope.posts[i].lng)} 
    }); 

    markers.push(marker); 

    bindInfoWindow(markers[i], map, infoWindow, html); 

} 

markers // no error messages, nothing 
console.log(markers); // still nothing 

EDIT:

エラーが

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

にあったに変更:しようとしたすべての人に

for(var i=0; i<$scope.posts.length; i++) 

@Maxxのおかげと感謝助けるために。 それはばかげた間違いでした。

+0

"マーカー//エラーメッセージなし、何もありません"マーカーをマーカーにプッシュする前にマーカーが何かを返しますか?そして、bindInfoWindowメソッドは何をしますか? – Ionut

+0

角度コードも記入してください。 –

+0

@Ionut、つまり、マーカー変数に反応がないということです。ブラウザのコンソールにエラーなどが表示されると思いました。しかし何も。 – 49volro

答えて

3

Error: $scope.posts[i] is undefined"

スクリプトでは、var html = $scope.posts[i].address;という例外がスローされています。その時点で停止します。したがって、はあなたがループにいるconsole.log(markers);

but.. I thought - OK, but it's working (markers are showing on map)

に達することはありません。マーカーのいくつかが表示されている場合、値の1つが未定義です(最初の値ではありません)。そのため、例外が発生し、スクリプトが停止します。

おそらく、10のハードコードではなく、配列のlengthまでループすることで解決できます。

, think about that error later.

常に最初のエラーを処理してください。それらはしばしば後続のエラーの原因になります。

関連する問題