Leaflet.jsというMap操作関連のライブラリを使いながら非同期で現在地を取得してユーザーのviewを移動する(flyTo method)コードを以下の通り記載しているのですが、done()部分がwhenの後に実行されません。
もし原因がわかる方がいらっしゃればアドバイスをいただけると幸いです。
よろしくお願いいたします。
html
1<style>.errDisplay{display:none;}</style> 2<div class="errorBox errDisplay">error</div>
javascript
1var $defer = new $.Deferred(); 2var opts ={ 3 enableHighAccuracy: true, 4 timeout: 5000, 5 maximumAge: 0 6} 7 8/*move current*/ 9$('.current').on('click',function(){ 10 $.when( 11 $defer, 12 $('.errorBox').removeClass('errDisplay'), 13 navigator.geolocation.getCurrentPosition(cpSuccess,cpFail,opts) 14 ).done(function(){ 15 setTimeout(function(){ 16 alert("here");//ここが処理されません 17 return $defer.resolve(); 18 },1000) 19 return $defer.promise(); 20 }) 21}) 22 23/*current position*/ 24function cpSuccess(position){ 25 const currentLat = position.coords.latitude; 26 const currentLng = position.coords.longitude; 27 28 map.flyTo([currentLat,currentLng],14); 29 30 if (current_marker) { 31 map.removeLayer(current_marker); 32 } 33}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/08 16:18 編集
2019/11/08 16:38