0

私はretrofit2 APIコールを使用してGoogleマップで作業しています。地図上にonCameraChange(CameraPosition arg0)イベントが発生してから5秒後にretrofit APIコールを呼び出す方法

カメラごとに変更する必要があります。私はAPIを呼び出す必要があります。

問題は、onCameraChange(CameraPosition arg0)メソッドが呼び出され、私のAPI呼び出しが呼び出されるたびに、ユーザーがスワイプ/ピンチズームしてしまう問題です。

api呼び出しが複数回実行されているため、マップ上のこの出力が完全に破損しています。

@Override 
public void onCameraChange(CameraPosition arg0) { 
    // TODO Auto-generated method stub 
    camerachange(); 
} 

public void camerachange() { 
    Log.e("temp", "camera change"); 
    // jarray = new JSONArray(); 
    jarray = new ArrayList<String>(); 

    LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds; 

    jarray.add(String.valueOf(bounds.southwest.latitude)); 
    jarray.add(String.valueOf(bounds.southwest.longitude)); 
    jarray.add(String.valueOf(bounds.northeast.latitude)); 
    jarray.add(String.valueOf(bounds.northeast.longitude)); 

    getPropertyList(jarray, 1) // this function has my retrofit call. 
} 

人はこの懸念に私を助けてください。

主な懸念事項は複数回にわたり、最後にスワイプ/ピンチズーム効果が必要です。

おかげ

答えて

0

あなたはOnMapLoadedCallbackを使用することができます。 the documentationから:マップはレンダリングが終了したときに呼び出されます)

onMapLoadedパブリック抽象無効(

。これは一度だけ呼び出されます。再度通知を受けたい場合は、別のコールバックを要求する必要があります。

だから、あなたはonMapReady方法で例えば、あなたのマップの初期setOnMapLoadedCallbackを設定する必要があります。その後、

public void onMapReady(GoogleMap map) { 
    map.setOnMapLoadedCallback(this); 
} 

とイベントが消費されるたびにsetOnMapLoadedCallback新をリセットします。

public void onMapLoaded() { 
    //TODO: Do your stuff 

    map.setOnMapLoadedCallback(this); 
} 

また、the documentationからの免責事項を考慮してください:

このイベントは、接続に関する問題のために地図が読み込まれない場合や、マップが絶えず変化しており、ユーザーが常に地図とやり取りするため、読み込みが完了しない場合は発生しません。

+0

この解決策は私のためには機能しません。 –

+0

私は、地図上でスワイプするたびに、APiコールが発射され、マーカーのリストが地図上にプロットされることになりました。したがって、ユーザーが連続してスワイプした場合は、最後のスワイプ効果がAPIコールに反映されます。そして最近は何が起こったのかはAPIコールが発砲し応答が絶えず変わるたびに起こります –

関連する問題