На карте Изменение региона в MapView Android Sdk - PullRequest
0 голосов
/ 28 января 2011

Я реализую приложение на основе Map Kit в Android.Я был очень новым для этого SDK.Моя проблема в том, что мне нужно запустить метод при изменении области карты.Ребята, пожалуйста, дайте мне знать, возможно ли использовать метод при изменении региона?

Ответы [ 2 ]

1 голос
/ 28 января 2011

регион карты изменится, когда карта выполнит методы панорамирования или масштабирования, но вы не сможете получить какую-либо информацию из этих методов, поэтому вы можете сделать это с помощью метода onDraw. Для этого вам нужно создать подкласс MapView и переопределить метод onDraw.

если вы сделаете это, вы можете получить четыре координаты, которые ограничивают отображаемую область, с помощью класса Projection, получающего координаты для каждой точки (верхний левый [0,0], верхний правый [width-0], нижний левый [ 0, высота] и нижний правый [ширина, высота]).

Например, в первом onDraw: вы получите эти четыре координаты, GeoPoint [4] init во втором прогоне onDraw вы получите четыре новые координаты, GeoPoint [4] end, так что тут можно сравнить регионы.

это дорогостоящая операция, поэтому механизм задержки поможет замедлить обнаружение изменений ...

0 голосов
/ 26 февраля 2014

Вы можете использовать событие onViewCameraChange в MapView, как показано ниже:

final Fragment mapFragment = getFragmentManager().findFragmentById(R.id.map); 
mMap =  ((MapFragment)mapFragment).getMap();
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {

    @Override
    public void onCameraChange(CameraPosition position) {
        Point point = new Point(mapFragment.getView().getWidth() / 2 , mapFragment.getView().getHeight()/2);
        LatLng l = mMap.getProjection().fromScreenLocation(point);
        Log.v("asd","center lat: " + l.latitude + " center long: " + l.longitude + " ");

    }
});
...