Я реализую приложение на основе Map Kit в Android. Я был очень плохо знаком с этим SDK. Моя проблема в том, что мне нужно запустить метод, когда область карты изменилась. Ребята, дайте мне знать, возможно ли запустить метод при смене региона?
Об изменении региона карты в MapView Android Sdk
Ответы (2)
область карты будет меняться, когда карта выполняет методы панорамирования или масштабирования, но вы не можете получить какую-либо информацию из этих методов, поэтому вы можете сделать это с помощью метода onDraw. Для этого вам нужно создать подкласс MapView и переопределить метод onDraw.
если вы сделаете это, вы можете получить четыре координаты, которые ограничивают отображаемую область, с классом Projection, извлекающим координаты для каждой точки (верхний левый [0,0], верхний правый [ширина-0], нижний левый [0, высота ] и внизу справа [ширина, высота]).
например, в первом onDraw: вы получаете эти четыре координаты, GeoPoint[4] init во втором запуске onDraw вы получаете новые четыре координаты, GeoPoint[4] end, так что здесь вы можете сравнить регионы.
это дорогостоящая операция, поэтому механизм задержки будет полезен для замедления обнаружения изменений...
Вы можете использовать событие MapView onCameraChange, как показано ниже:
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 + " ");
}
});