2016-12-24 6 views
1

У меня есть карта, в которой я показываю серию точек, связанных Полилинии, карта LiteMode, но при определенных обстоятельствах при создании LatLngBounds с этими точками и обновлении камеры некоторые точки оставлены вне карты.LatLngBounds или CameraUpdate не показывают все точки в режиме карты Lite

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
    for (LatLng latLng : listPoints) { 
     builder.include(latLng); 
    } 
    LatLngBounds bounds = builder.build(); 
    int padding = 0; //offset from edges of the map in pixels 
    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 
    map.moveCamera(cu); 

Как я могу это решить?

Через ломаных мы можем видеть, что они находятся вне поля зрения даже изменив pading: 1 И так видно, если я удалю LiteMode: 2]

ответ

2

Я решил проблему!
Согласно Maps режим Google Lite documentation говорит: позиция

камеры, масштабирование и анимация
Поддерживаются? Частично
Вы можете установить цель и масштаб камеры, но не наклон или подшипник. Уровень масштабирования округлен до ближайшего целого в режиме Lite. Вызов GoogleMap.moveCamera() даст вам другое статическое изображение карты. Дополнительную информацию о настройке и управлении камерой см. В разделе «Изменение вида».

Мое решение было получить видимую область с карты и сравнить, чтобы увидеть, если какой-либо из пунктов в моем списке были вне этого региона, если это так, я применил ZoomOut для уменьшения масштаба камеры достаточно, чтобы все мои точки были в видимой области.

for (LatLng latLng : listPoints) { 
       if (!(map.getProjection().getVisibleRegion().latLngBounds.contains(latLng))) { 
        map.moveCamera(CameraUpdateFactory.zoomOut()); 
        break; 
       } 
      } 

Видимо проблема, как я понимаю, что если уровень масштабирования, например 7,4 правильно отобразить все точки на карте, округляя его до ближайшего целого числа: , ценный .4 margin теряется, чем при LiteMode. Этот отключенный округляется до 8.

Я не знаю, является ли это наиболее оптимальным вариантом, но проблема была решена. Любое мнение приветствуется! :)

+0

Учитывая ограничения, ваше решение является лучшим вариантом. Поскольку это решает вашу проблему, вы должны принять свой собственный ответ, чтобы он мог помочь другим – antonio