Получить координаты центра карты в Android Mapview

#android

#Android

Вопрос:

В моем приложении я пытаюсь получить координаты центра карты, когда пользователь прокручивает карту.

Я хочу получить координаты и установить их в текстовом представлении.

Вот мой код для этого:

 public boolean onTouchEvent(MotionEvent event) {
        int action=event.getAction();
        projection=mapView.getProjection();
        int X = (int)event.getX();          
        int Y = (int)event.getY();
        if(action==MotionEvent.ACTION_MOVE)
        {


            metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);

            GeoPoint G = projection.fromPixels(metrics.heightPixels/2, metrics.widthPixels/2);
        //GeoPoint p=   mapView.getMapCenter();
            int lati=p.getLatitudeE6();
            Log.i("Lat : ","" lati);
            Toast.makeText(this,"" lati,Toast.LENGTH_LONG);

            int longi=p.getLongitudeE6();
            Log.i("Lon : ","" longi);
            Toast.makeText(this,"" longi,Toast.LENGTH_LONG);
            lat.setText("" lati);
            lon.setText("" longi);
        }
        return true;
    }
  

Комментарии:

1. Можете ли вы объяснить, что не работает?

Ответ №1:

Воспользуйтесь этой статьей:

http://mobiforge.com/developing/story/using-google-maps-android

Это ответит на все ваши вопросы об использовании mapview. (в основном на все). Плюс для ваших конкретных нужд:

найдите на странице «Получение местоположения, к которому было применено прикосновение«.

Комментарии:

1. вы узнали, как это сделать? Я пытаюсь добиться того же самого. Спасибо

2. @Thiago На вопрос уже был добавлен ответ. Аналогично тому, что я использую: projection=MapView.getProjection(); GeoPoint coordinatesOfMapCenter = проекция. Из пикселей (MapView.getWidth()/2, MapView.getHeight()/2);

Ответ №2:

OP включил правильный ответ в свой вопрос. Вот как это сделать:

 GeoPoint mapCenter = mapView.getProjection().fromPixels(
        mapView.getWidth()/2,
        mapView.getHeight()/2);

int lat = mapCenter.getLatitudeE6();
int lon = mapCenter.getLongitudeE6();
  

Ответ №3:

API немного обновлен. Вот актуальная версия:

 val mapViewCenter = Point(
    googleMapView.width / 2,
    googleMapView.height / 2
)
val mapCenter: LatLng = googleMap.projection.fromScreenLocation(mapViewCenter)