私は実行を命じる必要があります。一度呼び出されると、私のCOMPLETE coords()メソッドが終了したことを確認する必要があります。それに約束や$ qを追加する方法は?私はコンソール上で印刷しようとしましたが、coords()関数の最後の行が実行された後にfor each coops in coordsが完了しました。以下のコードを参照してください。私はあなたがfirebaseを使用していて、簡単に変数に格納返された子どもたちを確認することができます
var appa = angular.module('appa',['firebase','uiGmapgoogle-maps']);
appa.controller('mainCtrl', function($firebaseObject,$scope,$q) {
$scope.coords = function(){
var ref = firebase.database().ref();
var latArray = [];
var lngArray = [];
var cenlat;
var cenlng;
var marker = [];
ref.once("value")
.then(function(snapshot)
{
snapshot.forEach(function(child)
{
latArray.push(child.child("Lat").val());
console.log(child.child("Lat").val());
lngArray.push(child.child("Long").val());
var mark = {
id: child.child("Id").val(),
coords: {
latitude: child.child("Lat").val(),
longitude: child.child("Long").val()
},
options: { title: child.child("Alt").val() }
};
marker.push(mark);
CONSOLE.LOG("wWHY IS THIS PRINTED aFTER??? AND HOW TO HANDLE THIS ??");
});
cenlat = (Math.max.apply(Math,latArray)+Math.min.apply(Math,latArray)/2);
cenlng = (Math.max.apply(Math,lngArray)+Math.min.apply(Math,lngArray)/2);
});
$scope.map.center.latitude = cenlat;
$scope.map.center.longitude = cenlng;
CONSOLE.LOG("wWHY IS THIS PRINTED BEFORE??? AND HOW TO HANDLE THIS ??");
});
};
$scope.map = {
center:
{
latitude: 51,
longitude: 4
},
zoom: 2
};
$scope.coords();
});
あなたはスニペットの構文エラーに気付きましたか?あなたが投稿したコードは無効なjavascriptです。あなたは本当にそれを修正して、適切な書式設定をしたコードを投稿する必要があります。あなたのコードは読みにくく、確かにあなたのコードを書く方法は正確です。そして、** CONSOLE.LOG **はとにかく失敗するでしょう。** console.log ** - javascriptはビジュアルベーシックではなく、大文字と小文字が区別されます –
nemoAsad、エビデンスを収集して95%のデバッグを完了しました。間違った順序でログインしているので、コード実行のタイミングを知ることができます。 '$ scope.map'ステートメントが適切なタイミングで実行されるように、コードをシャッフルするだけです。それは複雑ではありません。 –
それが修正されたら、もっともっと.... (1)あなたの平均計算は間違っているようです。 '(max + min/2)'ではなく '(max + min)/ 2'がほしいでしょう。 (2)latとlngの範囲は-180〜+ 180です。 Grenwich経絡にまたがるlatsおよびlngのクラスタであればOKですが、International Date Lineにまたがるlngでは '(max + min)/ 2'は予期しない結果をもたらしますいつかそれが起こるので、 "それは決して起こらないだろう"と言えるくらい十分ではありません。 (3)最大値と最小値の簡単な算術平均は異常値を優先します。代わりに "重心"アルゴリズムを考慮してください。 –