#android #animation #controller #point #mapactivity
#Android #Анимация #контроллер #точка #mapactivity
Вопрос:
У меня есть действие, которое расширяет MapActivity, и внутри onCreate ()У меня есть этот код
GeoPoint point = new GeoPoint((int)(1.3*1E6),(int)(34.45*1E6));
final MapController mc;
mc.animateTo(point);
это анимирует до этой точки, однако, когда она анимируется, точка находится в центре экрана, и я хочу, чтобы она находилась в фиксированном положении (X, Y) на экране. Существует ли функция mc.animatetoLeftBottom (точка)?
Редактировать: Я использовал Projection p = mapView.getProjection();
point = p.fromPixels(50, 60);
mc.animateTo(point);
картинки: Когда я запускаю приложение, оно выглядит следующим образом :
После того, как я один раз нажму на пин-код, это выглядит так
И, если я снова нажму на пин-код, это будет выглядеть так:
Вот как это должно выглядеть, независимо от того, откуда я нажимаю на это, или если я прокручиваю, масштабирую, а затем нажимаю снова:
Я хочу, чтобы она автоматически перемещалась в эту позицию (см. Последнее изображение), когда я нажимаю на пин-код
Ответ №1:
Разве вы не можете просто изменить GeoPoint
, чтобы учесть этот факт, и анимировать в другой точке?
Комментарии:
1. Я думаю, вы не поняли вопрос, я имел в виду перемещение вида, а не фактическую точку, когда пользователь нажимает на нее. Даже если я поставлю другую точку, когда щелкну по ней, она все равно переместится в центр. Причина, по которой я не хочу, чтобы это было в центре, заключается в том, что когда я нажимаю на значок, появляется воздушный шар, и часть его не видна (эта проблема возникает на экранах небольшого разрешения)
2. Я предлагал вам центрировать карту в другой точке, что фактически расположит нужную вам точку в левом нижнем углу.
3. да, но как мне центрировать карту? кроме того, у меня более 1000 контактов
4. почему это больше не работает, когда я уменьшаю масштаб? Если я увеличу масштаб на этом уровне, он переместится вправо, а если я увеличу масштаб, он переместится слишком сильно влево
5. да, я решил это, мне пришлось умножить на значение, которое было связано с уровнем масштабирования
Ответ №2:
Попробуйте это:
MapView mv = getMapView(); // fetch your map view
Projection p = mv.getProjection();
GeoPoint point = p.fromPixels(X, Y);
mc.animateTo(point);
Комментарии:
1. позиция перемещается, но случайным образом, я хочу, чтобы она перемещалась в фиксированное положение на экране, когда я нажимаю на нее, например: если значок находится в правом углу экрана или в центре (по вертикали и горизонтали) экрана, когда я нажимаю на него, он перемещает экран в левый нижний угол.
2. Я не уверен, что полностью понимаю, что вы ищете, но лучший способ управления, который у вас есть, — это возможность указать центр карты. Итак, ваша задача — выяснить, каким должен быть центр, который настраивает карту так, чтобы она отображала то, что вы хотели бы. Карта не может перемещаться случайным образом: она будет центрироваться на любых X и Y, которые вы укажете. Если вам нужно применить смещение (чтобы карта поместила эту точку в нижний левый угол), то добавьте / вычтите смещение, верно?
3. не могли бы вы, пожалуйста, сказать мне, что эти X, Y должны делать? перемещают ли они положение вида с X px влево и Y px вниз? Например: если вывод находится в позиции (40, 80), а X = 10 и Y = 20, то при нажатии на вывод вид переместится в (50, 90)?
4. Если я вызову (без использования метода проекции) mc.animateTo (point); а затем MapView.scrollTo (50, 70);, он перейдет в это точное положение на экране, но я не могу снова нажать на булавку, и воздушный шар надуется, только если я нажму на центр экрана, также MapView не перерисовывается должным образом, слева и внизу есть черные линии