アンドゥマップAPIを使用する方法がありますか?パンアニメーションが完了した後でマップセンターを検出できますか?私は、この情報を使ってサーバーからマーカーを動的にロードしたいと考えています。 ありがとう BDアンドロイドマップ:ドラッグが完了した後にマップセンターを特定する方法
9
A
答えて
3
MapActivity
をお使いですか?ここで私が使用したコードは次のとおりです。
MapView mapView = (MapView)findViewById(R.id.map);
Projection projection = mapView.getProjection();
int y = mapView.getHeight()/2;
int x = mapView.getWidth()/2;
GeoPoint geoPoint = projection.fromPixels(x, y);
double centerLatitude = (double)geoPoint.getLatitudeE6()/(double)1E6;
double centerLongitude = (double)geoPoint.getLongitudeE6()/(double)1E6;
ます。また、このようなコードを追加する必要があります:
@Override
public boolean dispatchTouchEvent(MotionEvent event)
{
boolean result = super.dispatchTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP)
reload_map_data(); /// call the first block of code here
return result;
}
12
私もマップを検出し、「やったエンド・ドラッグ」ソリューションを探しています地図の移動が終了した直後の現在の中心。私はそれを見つけられていないので、私はこのうまく動作した簡単な実装を作った:
private class MyMapView extends MapView {
private GeoPoint lastMapCenter;
private boolean isTouchEnded;
private boolean isFirstComputeScroll;
public MyMapView(Context context, String apiKey) {
super(context, apiKey);
this.lastMapCenter = new GeoPoint(0, 0);
this.isTouchEnded = false;
this.isFirstComputeScroll = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
this.isTouchEnded = false;
else if (event.getAction() == MotionEvent.ACTION_UP)
this.isTouchEnded = true;
else if (event.getAction() == MotionEvent.ACTION_MOVE)
this.isFirstComputeScroll = true;
return super.onTouchEvent(event);
}
@Override
public void computeScroll() {
super.computeScroll();
if (this.isTouchEnded &&
this.lastMapCenter.equals(this.getMapCenter()) &&
this.isFirstComputeScroll) {
// here you use this.getMapCenter() (e.g. call onEndDrag method)
this.isFirstComputeScroll = false;
}
else
this.lastMapCenter = this.getMapCenter();
}
}
これは、それが助けてくれることを望む! O/
+0
これはうまくいきました。 – Federico
0
Android向け2016の8月マップは、onCameraMoveStarted
などのイベント(および移動理由、例えば、REASON_GESTURE
、REASON_DEVELOPER_ANIMATION
を検出することができるので。
ほとんどdocsから採取された次のコード()を得ますあなたが達成できるかのアイデア:?。
public class MyCameraActivity extends FragmentActivity implements
OnCameraMoveStartedListener,
OnCameraMoveListener,
OnCameraMoveCanceledListener,
OnCameraIdleListener,
OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_camera);
SupportMapFragment mapFragment =
(SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
mMap.setOnCameraIdleListener(this);
mMap.setOnCameraMoveStartedListener(this);
mMap.setOnCameraMoveListener(this);
mMap.setOnCameraMoveCanceledListener(this);
// Show Sydney on the map.
mMap.moveCamera(CameraUpdateFactory
.newLatLngZoom(new LatLng(-33.87365, 151.20689), 10));
}
@Override
public void onCameraMoveStarted(int reason) {
if (reason == OnCameraMoveStartedListener.REASON_GESTURE) {
Toast.makeText(this, "The user gestured on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_API_ANIMATION) {
Toast.makeText(this, "The user tapped something on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_DEVELOPER_ANIMATION) {
Toast.makeText(this, "The app moved the camera.",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCameraMove() {
Toast.makeText(this, "The camera is moving.",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCameraMoveCanceled() {
Toast.makeText(this, "Camera movement canceled.",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCameraIdle() {
Toast.makeText(this, "The camera has stopped moving.",
Toast.LENGTH_SHORT).show();
// Here you get the camera center
GeoPoint geoPoint = projection.fromPixels(mMap.getHeight()/2, mMap.getWidth()/2);
double centerLat = (double)geoPoint.getLatitudeE6()/(double)1E6;
double centerLng = (double)geoPoint.getLongitudeE6()/(double)1E6;
}
}
関連する問題
- 1. データフロージョブが特定のdlに完了した後にメールをトリガーする方法
- 2. アクションが完了した後でユーザーメタフィールドを更新する方法
- 3. 特定のスレッドが完了したことを追跡する方法
- 4. すべてのテストスクリプトを完了した後、特定のプロジェクトに対してテストスクリプトを実行する方法は?
- 5. テスト完了時に特定の座標にスクロールする方法
- 6. ASyncタスクが終了した後にアンドロイドサービスを終了する方法完了しましたか?
- 7. タスクを完了した後にプロシージャを呼び出す方法
- 8. すべて完了した後にSelenium WebDriverが終了する
- 9. すべてのダウンロードが完了した後に関数をトリガーする方法
- 10. ログイン完了後にdoInBackgroundで結果を返す方法UserLoginTaskでAPI補完ブロックが終了しました
- 11. Javascript forEachが実行を完了した後にコードを実行する方法
- 12. SyncAdapterが同期を完了した後にAndroid ListViewをリフレッシュする方法
- 13. document.writeが完了した後にリダイレクト
- 14. 他の機能が完了した後に機能を実行する方法
- 15. 投稿要求が完了した後にユーザーをリダイレクトする方法
- 16. Pyramidで応答が完了した後にメソッドを実行する方法は?
- 17. 検証が完了した後にページをリダイレクトする方法は?
- 18. GIFアニメーションが完了した後でページスクロールを有効にする方法
- 19. 完了後にプログラムが終了する
- 20. ドロップが完了したときにドラッグNドロップイベント
- 21. C#の実行が完了したがスレッドの実行が完了した後
- 22. アンドロイドマップの特定のポイントを避ける
- 23. RxJava - 完了する前に他のObservable/Completableをトリガーした後に完了
- 24. テストが正常に完了した後にプロセスがハングする
- 25. バルク挿入が完了したら「完了」メッセージを受け取る方法は?
- 26. サービス生成アクティビティが完了した後、以前のアプリに戻る方法
- 27. 完了ブロックが完了したらメソッドを呼び出す方法は?
- 28. アクティビティがデータの読み込みを完了した後、データをアクティビティからフラグメントに設定する方法
- 29. ajaxが完了した後のリビンド
- 30. twitterが完了した後のJQueryイベント
これは、あなたが(あなたがあなたの指を持ち上げた後) –
こんにちは、返信marccに感謝し、それを投げつける場合マップは少しやり方を動かし続ける「情事」を扱うんが、私はパンアニメーションが停止するときを検出する方法を見つける必要があります私はあなたのセンター計算コードをその時点で使用することができます。 – vamsibm