関数を実行し、ユーザー入力を待ってから、別の関数を実行するにはどうすればよいですか?

Cactusman07

関数を実行する方法を理解するのに問題があります-次に、ユーザー入力を待ってから(つまり、ユーザーが場所を共有することを選択した場合)、別の関数を実行します。「getUserLocation」関数が実行されると、ユーザーがアラートウィンドウに入力する前に、「addLocationArrayToMap」関数が実行されます。

一部のデバッグでは「userPosが定義されていません」と返されます。これにより、なぜ機能しないのかについての私の推測は正確だと思います。

以下のコード:

var markers =[];
var myLocationIconArray = [];
var infoWindowContentString = '';
var addInfowindow;
var distanceArray = [];
var addInfowindow;

function runAll() {
    getUserLocation(addLocationArrayToMap);
}

function getUserLocation() {    
    map.setOptions({draggable: true, zoomControl: true, scrollwheel: true, disableDoubleClickZoom: false});

// Another function that deletes 'dummy' markers before adding Real Markers to the map
    deleteMarkers();

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            centerPos = {
                lat: position.coords.latitude,
                lng: position.coords.longitude
            };
            map.setCenter(centerPos);
            addMarker(centerPos);
        }, function() {
            handleLocationError(true, map.getCenter());
        });
    } else {
        //Browser doesn't support Geolocation
        handleLocationError(false, map.getCenter());
    }
}

function handleLocationError(browserHasGeolocation, defaultPos) {
    infoWindowContentString = "Sorry, we can't get your location.";
    addInfowindow = new google.maps.InfoWindow({
          content: infoWindowContentString
        });
    map.setCenter(defaultPos);
    addMarker(defaultPos, addInfowindow);
}


function addMarker(location, addInfowindow) {
    var marker = new google.maps.Marker({
        position: location,
        map: map,
        animation: google.maps.Animation.DROP,
        icon: yourLocation,
        draggable: false,
        clickable: true
    });
    if (addInfowindow == null) {
        var myLocationInfowindow = new google.maps.InfoWindow({
          content: "Your location"
        });
        myLocationInfowindow.open(map, marker);
        myLocationIconArray.push(marker);
    } else {
        myLocationIconArray.push(marker);
    }
}


function addLocationArrayToMap() {
    userPos =  new google.maps.LatLng(centerPos.lat, centerPos.lng);

    for (var z = 0; z < dabblersArray.length; z++) {    
// dabblersArray is an array of Lat & Lng coords.
        dabblerLocation = new google.maps.LatLng(dabblersArray[z].lat, dabblersArray[z].lng);
        calculateDistance(userPos, dabblerLocation);

        markers.push(new google.maps.Marker({
        position: dabblersArray[z],
            map: map,
            icon: dabblers,
            draggable: false,
            clickable: true
        }));
// Some logic to add the distance from the user and the dabblersArray as an alert window above each marker - haven't done this yet. 
    }
}

function calculateDistance(userPos, dabblerLocation) {
    distance = google.maps.geometry.spherical.computeDistanceBetween(userPos, dabblerLocation);
    distanceArray.push(distance);
}
君は

JavaScriptには、ユーザーを待たせるという概念はありません。これを実現する方法は、navigator.geolocation.getCurrentPositionとまったく同じように、コールバックを使用することです。すでに使用している成功とエラーのコールバックがあります。

そして、あなたはすでに渡しているaddLocationArrayToMapgetUserLocation、それを使用していません。navigator.geolocation.getCurrentPosition成功ハンドラーのコールバック関数として呼び出す必要があります任務完了。

function runAll() {
    getUserLocation(addLocationArrayToMap);
}

function getUserLocation(onComplete) {    
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            //Your logic...

            //Invoke callback 
            onComplete();
        }, function() {
            handleLocationError(true, map.getCenter());
        });
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Python 3がユーザーから入力を受け取っている間に、どのように関数を実行しますか?

分類Dev

CasperJSの実行を停止し、ユーザーに値を入力させてから実行を継続するにはどうすればよいですか?

分類Dev

関数のコードが読み取られる前に、入力から関数を実行するにはどうすればよいですか?

分類Dev

メソッドチェーンを使用して、関数がコースを実行するのを待ってから再度呼び出す前に、同じJavaScript関数を繰り返し呼び出すにはどうすればよいですか?

分類Dev

入力パラメータの配列に基づいて関数内で関数を実行するにはどうすればよいですか?

分類Dev

React:状態変数を使用して別のコンポーネントから関数を実行するにはどうすればよいですか?

分類Dev

ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

分類Dev

関数の実行が完了するのを待ってから値を返すにはどうすればよいですか?

分類Dev

ユーザーから入力を取得し、その入力に基づいて関数を呼び出すにはどうすればよいですか?

分類Dev

ユーザー定義関数を使用してグループ化を実行するにはどうすればよいですか?

分類Dev

非同期呼び出しを行う関数を実行する場合、ループを実行する場合、関数の残りの部分を実行する前に呼び出しを待機させるにはどうすればよいですか?

分類Dev

すべてのユーザーアクションで関数を実行するにはどうすればよいですか?

分類Dev

ユーザーからのコンソール入力を許可しながらNSTimerを実行するにはどうすればよいですか?

分類Dev

仮のコンソールから関数を実行するにはどうすればよいですか?

分類Dev

ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

分類Dev

eval()関数を使用してコードを実行するにはどうすればよいですか?

分類Dev

複数の入力を受け取り、各入力に対して同じ関数を実行し、すべてを一度に出力するコードをDRYするにはどうすればよいですか?

分類Dev

関数を実行する前に、別の関数の完了を待機させるにはどうすればよいですか?

分類Dev

あるAWSLambda関数を別の関数からトリガーして、2番目の関数が1回だけ実行されるようにするにはどうすればよいですか?

分類Dev

現在のユーザーに対して関数が2回実行されないようにするにはどうすればよいですか?

分類Dev

tcshで、複数のシェルコマンドをフォークし、それらがすべて完了するまで待ってから、別のコマンドを実行するにはどうすればよいですか?

分類Dev

「At」ユーティリティで関数を実行するにはどうすればよいですか?

分類Dev

ユーザー入力を使用して別のファイルから変数を取得するにはどうすればよいですか?

分類Dev

ユーザーが10px以上スクロールしたときに関数を実行するにはどうすればよいですか?

分類Dev

papaparseの完全な関数から取得した結果/データを使用してhttppostを実行するにはどうすればよいですか?

分類Dev

cinを使用してintを要求するときに、ユーザー入力を効率的に確実に行うにはどうすればよいですか?

分類Dev

Unity / C#:別の関数が実行を終了した後に関数を実行するにはどうすればよいですか?

分類Dev

2つのdateChangeイベントを待って関数を実行するにはどうすればよいですか?

分類Dev

アラートからのユーザー入力を待っている間にshouldSelectItemAtを使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    Python 3がユーザーから入力を受け取っている間に、どのように関数を実行しますか?

  2. 2

    CasperJSの実行を停止し、ユーザーに値を入力させてから実行を継続するにはどうすればよいですか?

  3. 3

    関数のコードが読み取られる前に、入力から関数を実行するにはどうすればよいですか?

  4. 4

    メソッドチェーンを使用して、関数がコースを実行するのを待ってから再度呼び出す前に、同じJavaScript関数を繰り返し呼び出すにはどうすればよいですか?

  5. 5

    入力パラメータの配列に基づいて関数内で関数を実行するにはどうすればよいですか?

  6. 6

    React:状態変数を使用して別のコンポーネントから関数を実行するにはどうすればよいですか?

  7. 7

    ユーザーから入力を取得し、tkinterでPythonコード(sql)として入力を実行するにはどうすればよいですか?

  8. 8

    関数の実行が完了するのを待ってから値を返すにはどうすればよいですか?

  9. 9

    ユーザーから入力を取得し、その入力に基づいて関数を呼び出すにはどうすればよいですか?

  10. 10

    ユーザー定義関数を使用してグループ化を実行するにはどうすればよいですか?

  11. 11

    非同期呼び出しを行う関数を実行する場合、ループを実行する場合、関数の残りの部分を実行する前に呼び出しを待機させるにはどうすればよいですか?

  12. 12

    すべてのユーザーアクションで関数を実行するにはどうすればよいですか?

  13. 13

    ユーザーからのコンソール入力を許可しながらNSTimerを実行するにはどうすればよいですか?

  14. 14

    仮のコンソールから関数を実行するにはどうすればよいですか?

  15. 15

    ユーザー定義関数をPythonのユーザー入力として使用するにはどうすればよいですか?

  16. 16

    eval()関数を使用してコードを実行するにはどうすればよいですか?

  17. 17

    複数の入力を受け取り、各入力に対して同じ関数を実行し、すべてを一度に出力するコードをDRYするにはどうすればよいですか?

  18. 18

    関数を実行する前に、別の関数の完了を待機させるにはどうすればよいですか?

  19. 19

    あるAWSLambda関数を別の関数からトリガーして、2番目の関数が1回だけ実行されるようにするにはどうすればよいですか?

  20. 20

    現在のユーザーに対して関数が2回実行されないようにするにはどうすればよいですか?

  21. 21

    tcshで、複数のシェルコマンドをフォークし、それらがすべて完了するまで待ってから、別のコマンドを実行するにはどうすればよいですか?

  22. 22

    「At」ユーティリティで関数を実行するにはどうすればよいですか?

  23. 23

    ユーザー入力を使用して別のファイルから変数を取得するにはどうすればよいですか?

  24. 24

    ユーザーが10px以上スクロールしたときに関数を実行するにはどうすればよいですか?

  25. 25

    papaparseの完全な関数から取得した結果/データを使用してhttppostを実行するにはどうすればよいですか?

  26. 26

    cinを使用してintを要求するときに、ユーザー入力を効率的に確実に行うにはどうすればよいですか?

  27. 27

    Unity / C#:別の関数が実行を終了した後に関数を実行するにはどうすればよいですか?

  28. 28

    2つのdateChangeイベントを待って関数を実行するにはどうすればよいですか?

  29. 29

    アラートからのユーザー入力を待っている間にshouldSelectItemAtを使用するにはどうすればよいですか?

ホットタグ

アーカイブ