6

ユーザーの現在の位置を地図の中央に配置するボタンを地図に追加したいのですが、ユーザーが地図をナビゲートし、現在の位置が地図に表示されなくなった場合にのみアクティブにする必要があります。onTouchEventメソッドを使用してナビゲーションを検出しました。

 @Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {

Log.e("Touch", Integer.toString(event.getAction()));

int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
    touchStarted = true;
} else if (action == MotionEvent.ACTION_MOVE) {

   if (event.getPointerCount() > 3)
     moveStarted = true;
    return true;

}
return true;
}

しかし、現在の位置が画面上にないことをどのように検出しますか?

4

2 に答える 2

9

実際、私はより良い解決策を見つけました:

private void CheckVisibility(Marker myPosition)
{
    if(googleMap != null)
    {
        //This is the current user-viewable region of the map
        LatLngBounds bounds = googleMap.getProjection().getVisibleRegion().latLngBounds;

            if(bounds.contains(myPosition.getPosition()))
                   //If the item is within the the bounds of the screen

            else
                  //If the marker is off screen
    }
}
于 2013-10-24T15:26:31.810 に答える
0

これを行う方法に関する私の最善のアイデアは、最初にカメラが何を指しているのか (つまり、ユーザーが見ることができるもの) を見つけることです。次に、LatLng に関してカメラの視野にあるものを正確に把握し、それをユーザーの現在の位置と比較するためにいくつかの計算を行います。

  1. 現在の LatLng、Zoom、Tilt に関する CameraPosition データを取得する - https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/CameraPosition
  2. 画面に実際に表示されているものを把握します。ここで出発点を確認してください: https://developers.google.com/maps/documentation/android/views#the_camera_position
  3. LocationProvider を介して LocationListener から現在の場所を取得します。
  4. 現在の画面でユーザーの場所が表示可能かどうかを確認するために、もう少し計算します。

別の提案は、API の一部として含まれている現在地ボタンを使用することです。常に表示されますが、Google マップ アプリと同じであるため、ユーザーは操作方法を既に理解しています。

于 2013-10-22T23:33:45.410 に答える