Как анимировать в другую позицию эту центральную карту

#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 не перерисовывается должным образом, слева и внизу есть черные линии