2017-08-16 20 views
-1

に複数のイベントを追加するには:いずれか2つのいずれかのイベントが発生し、このコードが実行されるときGoogleマップのAPI V3 - 私は正常に動作し、次のコードを持つシングル地図

google.maps.event.addListener(map, 'dragend', function() { 
    bounds = map.getBounds(); 
    var ne = bounds.getNorthEast(); // LatLng of the north-east corner 
    var sw = bounds.getSouthWest(); // LatLng of the south-west corder 
    $.when(removeMarkers()).then(setMarkers(city, state, ne, sw)); 
}); 

私が欲しいのです。私が欲しい2つのイベントは、 'dragend'と 'zoom_changed'です。私は 'アイドル'イベントを試して、それはマップを遅くし、私は好きではないことが起こっている。それは単に悪いユーザーエクスペリエンスを作ります。しかし、 'dragend'と 'zoom_changed'の両方のイベントは別々にうまくいくので、それらを組み合わせる方法は見つけられません。基本的には、誰かが地図をパ​​ンしたり、ズームインまたはズームアウトしたりするたびに、コードを実行します。

私はこのコードを試してみましたが、私は「境界がnull」とそれはzoom_changed 'イベントライン以下の「境界」の右の2番目のインスタンスを指すというエラーを取得:あなたの場合は

google.maps.event.addListener(map, 'dragend', function() { 
    bounds = map.getBounds(); 
    var ne = bounds.getNorthEast(); // LatLng of the north-east corner 
    var sw = bounds.getSouthWest(); // LatLng of the south-west corder 
    $.when(removeMarkers()).then(setMarkers(city, state, ne, sw)); 
}); 
google.maps.event.addListener(map, 'zoom_changed', function() { 
    bounds = map.getBounds(); 
    var ne = bounds.getNorthEast(); // LatLng of the north-east corner 
    var sw = bounds.getSouthWest(); // LatLng of the south-west corder 
    $.when(removeMarkers()).then(setMarkers(city, state, ne, sw)); 
}); 
+0

投稿コード([fiddle](http://jsfiddle.net/geocodezip/kv0ewnj3/1/))でこのエラーは発生しません。問題を示す[mcve]を入力してください。 – geocodezip

答えて

0

を複数のイベントに応答して同じコードを正確に実行し、それを名前付き関数に置き、その関数を両方のイベントのイベントリスナーとして使用したいとします。

また、あなたのremoveMarkers()機能では$.when().then()をなぜ使用していますか?これは非同期の機能ですか?それはむしろ珍しいことです。いくつかのマーカーを除去する関数の典型的な実装は、通常の同期コードです。

ですから、このようなコードを書くことができます。

function updateMarkers() { 
    bounds = map.getBounds(); 
    var ne = bounds.getNorthEast(); 
    var sw = bounds.getSouthWest(); 
    removeMarkers(); 
    setMarkers(city, state, ne, sw); 
} 

google.maps.event.addListener(map, 'dragend', updateMarkers); 
google.maps.event.addListener(map, 'zoom_changed', upateMarkers); 

はこのすべてを言って、私はあなたがに走ったエラーの原因となることだろうか見当がつかない。問題を示す実行可能なテストケースを、ここのスニペットまたはフィドルに投稿する必要があります。

+0

マイケルに感謝します。問題の原因はわかりませんが、非常に広範なコードですが、これはうまくいきました。ありがとう! – KYLE

関連する問題