Markers e Listeners no Google Maps Android
SeguirEmail
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.
Kit Android Você está preparado para a próxima "Killer Tecnologia"?
A próxima "super killer tecnologia" de desenvolvimento de aplicativos?...	Que papo cansativo e falho é esse!
Vamos conversar um pouco
Blog /Android /Markers e Listeners no Google Maps Android
Vinícius Thiengo
(8850) (12)
"Se desejas melhorar, contenta-te em parecer desinformado ou estúpido em assuntos que desconheces; não desejes parecer informado. E se alguns te consideram alguém importante, desconfia de ti mesmo."
TítuloMapas Android de Alta Qualidade - Masterização Android
CategoriasAndroid, Kotlin, Masterização, Especialização
AutorVinícius Thiengo
Edição1ª
Ano2020
Capítulos11
Páginas166
Acessar Livro
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Curso Android, gratuito
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Opa! Blz?
Nesse vídeo dou continuidade a série de vídeos sobre o Google Maps V2 no Android, dessa vez mostrando como trabalhar com Markers e Listeners na classe GoogleMap. Os listeners apenas coloquei quatro dos que acredito serem os mais utilizados no Google Maps, porém mostro pela página da classe todos os listeners existentes (o link da página está no final). Quanto aos marcadores, fique atento quanto a criação do Marker, pois ele somente é obtido quando passado o MarkerOptions como parâmetro de entrada no método addMarker() do objeto GoogleMap. No momento de colocar um icon personalizado no lugar do icon "pin" padrão do Marker no Google Maps utilizei o método fromResource() da classe BitmapDescriptorFactory, porém como apresentado no vídeo você pode utilizar as imagens de outros fonrcedores de recurso, como um File, por exemplo. Quanto a personalização da InfoWindow do Marker, é só entender a função dos métodos getInfoContents() e getInfoWindow() e que eles não traballham em conjunto que ficará fácil personalizar suas próprias InfoWindows. Então é isso, sem mais delongas vou deixar você assistir ao vídeo.
O link para download do projeto se encontra logo abaixo no post.
Segue link das páginas apresentadas em vídeo:
Página da classe MarkerOptions no site oficial de desenvolvedores Android
Página da classe Marker no site oficial de desenvolvedores Android
Página da classe GoogleMap referenciando seus listeners no site oficial de desenvolvedores Android
Se você ainda não viu os dois vídeos anteriores da série sobre o GoogleMaps V2 no Android, segue os links deles:
Google Maps V2 no Android, Inicio e Configuração
GoogleMap e CameraPosition no Android, Entendendo e Utilizando
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Download do arquivo .zip com os arquivos do vídeo.
Navigator Drawer na ActionBar Android, Entendendo e UtilizandoAndroid
Parser RSS / Atom com a lib Rome no AndroidAndroid
Google Maps V2 no Android, Inicio e ConfiguraçãoAndroid
GoogleMap e CameraPosition no Android, Entendendo e UtilizandoAndroid
android - googlemap - markeroptions - marker - infowindow - listeners googlemaps
Comentários Blog (12)
Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Breno Alves (1) (0)
Parabéns pelo material apresentado e pela clareza nas explicações!
Gostaria de saber uma maneira de formatar o title e o snippet, como por exemplo: centralizar, quebrar linha no snippet.
Vinícius Thiengo (0) (0)
Breno, tudo bem?
Formatação nesse nível no marker, provavelmente você consegue se trabalhar com uma SpannableString.
Veja o artigo e vídeo do link a seguir. São atuais e neles explico como utilizar uma Spannable para conseguir formatações onde, a princípio, não seria possível.
Segue link: http://www.thiengo.com.br/como-utilizar-spannable-no-android-para-customizar-strings
cleidson (1) (0)
Olá Vinícius.
Primeiramente gostaria de lhe parabenizar pelos vídeos criados.
Estou com uma dúvida sobre o Marker, na verdade não tenho certeza se seria realmente o Marker, bom vamos ver:
Gostaria de saber se existe a possibilidade de utilizar os pontos de parada de ônibus que já vem no mapa da API?
Se posso alterar o ícone;
Obter as suas localizações (pode ser ao clicar);
Disparar um evento quando um usuário clicar no ícone.
Resumindo existe a possibilidade de interagir com esses pontos ou não é possível?
Fala Cleidson, blz?
É possível sim interagir com o Marker, no caso utilizando seus listener (o vídeo acima cobre isso). Quanto aos pontos de parada, o Maps funciona da seguinte maneira: vc terá de requisitar esses pontos da base do Google ou de sua base, logo vc terá de plotá-los na maps, utilizando os icons padrões retornados pela requisição ao Google, ou trocar (mesmo quando vindas as coordenadas do Google) e utilizar seus próprios icons personalizados, a ideia que tem de ter é que as coordenadas serão trabalhadas de forma independente do Maps. Abraço
Como faço pra requisitar esses pontos ao google? E pra mudar o ícone padrão do google? Você tem algum material a respeito disso?
Cleidson, blz?
Essa questão dos pontos de parada de onibus eu acabei assumindo que existe nativo no Google Maps baseado em seu comentário, no caso encontrei essa resposta no StatckOverflow (http://stackoverflow.com/a/12481253/2578331 ) onde aponta para um código exemplo no GitHub e para o blog post (http://ddewaele.blogspot.in/2011/05/introducing-google-places-api.html ) que permite essas requisições. Note que não importa os icons utilizados por padrão, as coordenadas vão ser entregues, com o vídeo acima vc saberá como colocar markers personalizados, não precisará alterar nada dos icons enviados junto as coordendas (se algum for fornecido junto as coordenadas), apenas colocar os seus personalizados. Abraço
victor (2) (0)
Olá Vinícius. Primeiramente gostaria de lhe parabenizar pelos vídeos criados.
Cara, tenho um app em desenvolvimento que chamará um web service toda vez que a sua posição mudar 50 metros e receberá um json com várias coordenadas.
Com estas coordenadas, eu preciso abrir o maps e colocar os marcadores na tela. Isso terá que estar sempre mudando, a medida que a localização vá mudando a cada 50 metros.
Tenho uns conhecidos que estão dizendo que vou precisar colocar este consumo em um service (para rodar mesmo com o app fechado) e ir consumindo o Web Service.
Mas acho que só com o LocationListener já conseguiria fazer rodar direitinho, pois se o App está fechado eu não preciso pegar estas coordenadas.
Pode me dar uma dica de qual a melhor forma?
Vinícius Thiengo (1) (0)
Fala Victor, blz?
A sua escolha é a melhor, o Service rodando mesmo com o APP fechado é somente se sua APP precisar dessa feature, mas pelo caso a sua não precisa se estiver fechada. O ruim do Service tb é o consumo que ele vai colocar na bateria, pois dependendo da frequência que ele é chamado isso afeta bastante no consumo dela devido a ter chamadas ao server Web tb. O LocationListener lhe permite setar uma nova chamada por meio de tempo e / ou espaço. Utilize somente o espaço (50m) e com um Volley rodando para obter as coordenadas de seu Server vc terá sua APP. Digo Volley, pois é o recomendado pelo Google, mas qualquer outra forma de conexão é válida. Abraço
Victor (1) (0)
Muito obrigado pelo retorno.
Um detalhe que acabei esquecendo de colocar (estava muito tarde e cabeça não funcionava mais) é que vou precisar em certo momento (dependendo do retorno do Web Service) colocar uma mensagem de confirmação na tela para o usuário e se ele aceitar, vou ter que ativar a navegação do Google Maps do local em que eu estou até o local que o Web Service me passou.
Continuo com esta ideia do LocationListener ou neste caso é melhor pensar no Service?
Isso, o Service é somente se vc for executar algo demorado no background ou se for precisar de execução mesmo com o APP fechado (e alguns outros casos menos comuns). Porém somente o LocationListener não atenderia mais as suas necessidades, terá de trabalhar outras entidades de maps no Android, para poder traçar essa rota. Nos vídeos de maps do Blog tem isso tb. Abraço
Yago (1) (0)
Olá Thiengo muito boa sua aula me ajudou muito a conseguir trabalhar com o Maps. Sou iniciante no Android e estou tendo problemas na hora de abrir o mapa com os marcadores no meu App. tenho um menu principal e quando vou chamar a classe do mapa ele mostra que são incompativeis uma é Fregment v4 e outra FragmentActivity. poderia me dar uma luz de como resolver isso?
Fala Yago, blz?
O Fragment da support-v4 é uma entidade que não tem relação com o FragmentActivity que é outra entidade, basicamente é: FragmentActivity é uma Activity e fragment da v4 é um fragment, são entidades que nem cast funciona, pois não tem ligação hierárquica ... somente a classe Object, mas ai no caso não seria uma boa realizar esse tipo de conversão. Coloque esse script seu aqui para vasculharmos o que há. Abraço