2017-01-23 3 views
7

Я пытаюсь установить местоположение пользователя на карте таким образом, чтобы оно находилось примерно на 1/3 пути вверх от нижней части экрана, и когда карта вращается, она будет вращаться вокруг этого точка.Изменение центра смещения карты Google

Наиболее близким к достижению этого является использование метода setPadding(), однако это приводит к тому, что карта сотрясается при повороте, так как точка центра «плавает» вокруг того места, где она на самом деле должна быть. Это выглядит довольно уродливо

int mapHeight = mapView.getHeight(); 
googleMap.setPadding(0, mapHeight/5, 0, 0); 

Есть ли лучший способ сделать это?

Edit: Разъяснения в картинке ниже

enter image description here

+0

Может быть, это поможет вам: http://stackoverflow.com/questions/41469392/lock-google-maps-on-users -location/41618422 # 41618422 –

+0

Я не вижу, как этот ответ позволит мне заблокировать местоположение пользователей в месте, отличном от центра карты. – Dportology

+0

Можете ли вы объяснить немного лучше, что вы пытаетесь сделать? Возможно, изображение ... –

ответ

13

Вам не нужно

Прокладки

Изменение MapPoint X и Y значения, как вам нужно вы можете назвать это, где вы хотите! может быть внутри вашего onLocationChanged как changeOffsetCenter(location.getLatitude(),location.getLongitude());

public void changeOffsetCenter(double latitude,double longitude) { 
      Point mappoint = mGoogleMap.getProjection().toScreenLocation(new LatLng(latitude, longitude)); 
      mappoint.set(mappoint.x, mappoint.y-100); // change these values as you need , just hard coded a value if you want you can give it based on a ratio like using DisplayMetrics as well 
      mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(mGoogleMap.getProjection().fromScreenLocation(mappoint))); 
     } 

выход:

enter image description here

+0

Как использовать для двух точек с помощью LatLngBounds? – ZeroOne

+0

@ZeroOne ваш вопрос непонятен подробно прошу? вы можете иметь один центр, что вы спрашиваете? –

+0

в основном, как это сделать для нескольких маркеров, которые переставляют их в нижней части карты? – ZeroOne

Смежные вопросы