googlemaps v3 について

下記のようにしたときに
距離がアラートで表示されるようにする方法を教えて下さい。

下記のままだと「undefined」になります。
ちなみに取得直後の位置では正常に値が表示されます。

directionsService.route(request, function(result, status) {
if (status == google.maps.DirectionsStatus.OK) {
dist = result.routes[0].legs[0].distance.value;
}
});
alert(dist);

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/05 23:52:58
  • 終了:2011/07/06 15:00:41

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4440ベストアンサー獲得回数18242011/07/06 00:14:40

ポイント100pt
directionsService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            dist = result.routes[0].legs[0].distance.value;
            alert(dist);
        }
    });

では、どうだろう?


-- 追記 --

alert(dist); の位置は

directionsService.route(request, function(result, status) {});

の外側にしたいのです。

それは無理だよ。

ソースの行では、route メソッドの callback が先に書かれているけど、

実際には alert() の行が実行されるのは、callback が呼ばれる前だから。


どうして、外側にしたいの?

id:worldtravel

ありがとうございます。

alert(dist); の位置は

directionsService.route(request, function(result, status) {});

の外側にしたいのです。

教えて頂いた場所ですと表示されるのはわかっております。

> ちなみに取得直後の位置では正常に値が表示されます。

    • 追記後 --

> 無理

ありがとうございます。

やはりダメなのですか.....残念です。

>どうして外側にしたいのか

この次の処理に取得した値を使いたいのです。

質問でalert()にしているのは

alert()で思い通りに行けば、別の処理でも使えるだろうと思ったからです。

そしてこれはループの中であって

複数回それを繰り返そうとしています。


無理と言うことで諦めます。

ありがとうございました。

2011/07/06 14:58:34
  • id:a-kuma3
    あー、締めるの早いよ :-)
    route の callback の結果をまとめて処理したい、ということね。

    雰囲気だけだけど、こんな感じになるんじゃないかなあ。


    var N = ... // 繰り返しの数が分かってるとして
    var dist_array = [] // distance をためておく配列

    function ○○ {
    for (N回のループ) {
    ...
    directionsService.route(request, route_callback);
    }
    }

    function route_callback(result, status) {
    dist = result.routes[0].legs[0].distance.value;
    dist_array.push(dist);
    setTimeout(last_proc, 0);
    }

    function last_proc() {
    if (dist_array.length == N) { // 全部、たまってから
    まとめてやりたい処理
    }
    }


    スコープとか調整すれば、namespace を汚さずにできると思います。
  • id:worldtravel
    ありがとうございます。

    記録しておき、まとめて処理するのですね。

    参考にさせていただきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません