As sobreposições de solo são sobreposições no mapa vinculadas a coordenadas de latitude/longitude. Portanto, elas se movem quando você arrasta ou aplica zoom no mapa.
Introdução
Uma sobreposição de solo é uma imagem fixa em um mapa. Diferente dos marcadores, as sobreposições de solo são orientadas em relação à superfície da Terra e não em relação à tela. Portanto, a rotação, a inclinação ou a alteração do zoom do mapa muda a orientação da imagem.
Para adicionar uma sobreposição de solo, crie um objeto
GMSGroundOverlay
que defina um ícone e os limites. Se um desses parâmetros não for especificado, a sobreposição de solo não vai aparecer no mapa. Também é possível especificar configurações adicionais que afetam o posicionamento da imagem no mapa.
Depois de definir as opções necessárias, defina a propriedade map
do objeto para adicionar a sobreposição.
Como adicionar uma sobreposição
- Instancie um novo objeto
GMSGroundOverlay
. - Defina a propriedade
icon
como uma instância deUIImage
. - Defina a propriedade
bounds
como uma instância deGMSCoordinateBounds
. Os limites representam os cantos sudoeste e nordeste da imagem. - Defina propriedades opcionais, como
bearing
ezoomLevel
, conforme desejado. - Defina a propriedade
map
. A imagem aparece no mapa.
O exemplo abaixo demonstra como incluir uma sobreposição de solo em um objeto GMSMapView
.
Swift
let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655) let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544) let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast) // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg let icon = UIImage(named: "newark_nj_1922") let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView
Objective-C
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655); CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544); GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest coordinate:northEast]; // Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"]; GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView;
Como remover uma sobreposição
Você pode remover uma sobreposição de solo do mapa definindo a propriedade map
do GMSGroundOverlay
como nil
. Como alternativa, remova todas
as sobreposições (inclusive sobreposições de solo) existentes no mapa chamando o
método clear
GMSMapView
.
Swift
mapView.clear()
Objective-C
[mapView clear];
Se você quiser fazer modificações em uma sobreposição de solo após adicioná-la ao mapa, mantenha o objeto GMSGroundOverlay
. Você pode
modificar a sobreposição de solo mais tarde fazendo alterações nesse objeto.
Swift
let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon) overlay.bearing = 0 overlay.map = mapView // ... overlay.isTappable = true
Objective-C
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon]; overlay.bearing = 0; overlay.map = mapView; // ... overlay.tappable = YES;
Eventos
É possível escutar eventos ocorridos no mapa, como o toque de um usuário em uma sobreposição. Para detectar eventos, é necessário implementar o protocolo
GMSMapViewDelegate
. Consulte o
guia de eventos e a lista de métodos no
GMSMapViewDelegate
.