2015-09-24 3 views
2

Я использую карту google для iOS. У меня есть набор координат. Среди них я хочу установить одну из координат как центр карты, независимо от уровня масштабирования. Я могу одновременно установить все координаты в кадре, используя GMSCameraUpdate fitBounds. Но как я могу установить определенную координату как центр все время, а также подобрать остальную часть координат в кадре.Настройка центра карты и масштабирования для соответствия всем координатам

То, что я пытался это создать GMSCoordinateBounds, включены все координаты и установить прилегание границы

[myMapview animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:20.0f]]; 

Но то, что я хочу это посмотреть на карте следует увеличить таким образом, чтобы эта конкретная координат должна быть точный центр, а все остальные координаты также включены в рамку.

ответ

1

Вы должны хранить все точки карты в GMSCoordinateBounds используя как этот

GMSCoordinateBounds* bounds = [[GMSCoordinateBounds alloc] init ]; 
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(26.00, 75.00); 
bounds = [bounds includingCoordinate:position]; 

магазин все позиции, используя тот же самый код типа. Добавление любого использования GMSCoordinateBounds положения с картой

[myMapview animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds]]; 
//myMapview = this is object of your google map. 
+0

То, что я сделал. Но я хочу, чтобы одна конкретная координата находилась в центре все время, при этом остальная часть координат в кадре. –

+0

вам необходимо сохранить все координаты вашей карты для показа здесь. –

0

Все, что вам нужно, чтобы создать правильный GMSCoordinatedBounds объект. Скажите, что у вас есть несколько точек, которые вам нужно установить с помощью камеры для карт и точки center.

Сначала вам нужно найти самую дальнюю точку от center. Затем вычислите дополнительную точку far' напротив той, которую вы нашли. Это будет выглядеть так

(далеко) --------- (центр) --------- (до ')

Для этого просто использовать простой +/- операции с широтами и долготами far и center координаты.

Far и far' будут точными двумя точками bounds.

0

Не могли бы вы найти следующий код. Я надеюсь, что это будет полезно для вас

Цель состоит в том, чтобы установить границы карты, чтобы сфокусироваться на всех маркерах. enter image description here

В классе «GMSMapView» использовался метод «маркеры», который возвращал все маркеры, но теперь он устарел. Итак, вам нужно будет отслеживать маркеры, добавленные на карту.

Если предположить, что у вас есть следующее:

GMSMapView *mapView; 
NSMutableArray *markers; 

и все маркеры добавить к «маркеры» NSMutableArray.

- (void)ShowAllMarkers 
{ 
CLLocationCoordinate2D firstLocation = ((GMSMarker *)markers.firstObject).position; 
GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:firstLocation coordinate:firstLocation]; 

for (GMSMarker *marker in markers) { 
    bounds = [bounds includingCoordinate:marker.position]; 
} 

[mapView animateWithCameraUpdate:[GMSCameraUpdate fitBounds:bounds withPadding:50.0f]]; 
} 

enter image description here

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