Tutorial: Introdução – API Google Maps v2 Android
Com a API do google maps v2 para Android, você pode adicionar mapas com base em dados do Google Maps para a sua aplicação. A API lida automaticamente com acesso aos servidores do Google Maps, download de dados, visualização do mapa, e resposta a gestos no mapa. Você também pode usar os métodos da API para adicionar marcadores, polígonos, sobreposições, e ainda mudar a visão de uma área do mapa. Esses objetos ajudam a fornecer informações adicionais para os locais, e permite a interação do usuário com o mapa.
A seguir, apresentarei os passos para você criar sua primeira aplicação utilizando o básico destes recursos. Para isso,abra o adt-bundle e vamos ao trabalho.
Você deverá ver uma saída semelhante a esta e dentre as informações você já pode ver seu SHA-1 fingerprint
*O proximo passo é registrar sua SHA-1, acesse o site da API do google https://code.google.com/apis/console/Logado com uma conta;
A seguir clicque no link API Access, também no lado esquerdo. Na extremidade inferior desta página temos um link “Create nem android key”. Na caixa de texto apresentada deve-se colocar o SHA1 de seu certificado, seguido do nome do pacote da sua aplicação Android que deverá interagir com os serviços Google.
android:allowBackup=”true”
android:icon=”@drawable/icon”
android:label=”@string/app_name”
android:theme=”@android:style/Theme.NoTitleBar” >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name=”com.google.android.maps.v2.API_KEY”
android:value=”your_api_key” />
<permission android:name="<SEU_PACOTE>.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="<SEU_PACOTE>. permission.MAPS_RECEIVE" /> <uses-permission android:name= "android.permission.INTERNET" /> <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name= "com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name= "android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:allowBackup="true" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" > <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your_api_key" /> ... No arquivo .xml referente ao mapa altere para : <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MapActivity" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> </RelativeLayout> E por fim a sua activity deve ficar assim : public class MapActivity extends Activity { private LatLng frameworkSystemLocation = new LatLng(-20.397833,-43.50906); private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); //Adiciona um ponto no mapa no local pré determinado Marker frameworkSystem = map.addMarker(new MarkerOptions() .position(frameworkSystemLocation).title("Framework System")); // Move a câmera para Framework System com zoom 15. map.moveCamera(CameraUpdateFactory.newLatLngZoom(frameworkSystemLocation , 15)); map.animateCamera(CameraUpdateFactory.zoomTo(17), 2000, null); //Marca sua posição no mapa map.getUiSettings().setMyLocationButtonEnabled(true); map.getUiSettings().setCompassEnabled(true); map.setMyLocationEnabled(true); }
REFERENCES https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_api
Tutorial muito bom, bem explicado. Porém no meu código o trecho (MapFragment), onde tem map = ((MapFragment)… está dando o seguinte erro: MapFragment cannot be resolved to a variable, ou seja não pode ser resolvido de uma variável. Fiquei sem entender e sem saber o que fazer, se vocês puderem me esclarecer, fico agradecido.
Me desculpe a demora para responder, houve uma atualização da api após a criação do tutorial, e agora é necessário adicionar os seguintes passos para funcionar corretamente:
class=”com.google.android.gms.maps.MapFragment” no fragment do xml e o seguinte metada no aplication do manifest.
meta-data android:name=”com.google.android.gms.version” android:value=”@integer/google_play_services_version” /
O tutorial, está atualizado, em caso de qualquer dúvida.
Voce fez esse tutorial ou só copiou ? Voce escreveu o codigo e testou ? Por que já segui uns 10 tutoriais e nada funciona. No meu sempre da erro no <fragment
android.view.inflateexception
Me desculpe a demora para responder. Sim o código foi testado e utilizado em diversos aplicativos, o problema é que houve uma atualização da api após a criação do tutorial, e agora é necessário adicionar os seguintes passos para funcionar corretamente:
class=”com.google.android.gms.maps.MapFragment” no fragment do xml e o seguinte metada no aplication do manifest.
meta-data android:name=”com.google.android.gms.version” android:value=”@integer/google_play_services_version” /
O tutorial, está atualizado, em caso de qualquer dúvida.
Fala Jeferson,
Ótimo tutorial, de todos que segui o seu foi o primeiro que funcionou corretamente.
Porém fiquei com uma dúvida, na linha que vc definiu o titulo do marker:
.position(frameworkSystemLocation).title(“Framework System”));
E se eu quiser adicionar uma descrição, como por exemplo o endereço do local, tem como?!
abraços,
Leonardo
Olá,
Já segui passo a passo várias vezes e continua sem reconhecer o comando getFragmentManager() , já inclui
class=”com.google.android.gms.maps.MapFragment” no fragment do xml e o seguinte metada no aplication do manifest.
meta-data android:name=”com.google.android.gms.version” android:value=”@integer/google_play_services_version” /
e continua sem reconhece.
Grato,
Rafael
Você tem que deixar estas declarações dentro da tag
tag application
Experimente fazer um import:
import com.google.android.gms.maps.MapFragment;
Possíveis soluções para este problema são:
– Tente atualizar o google play services no sdk manager. (Após atualizar, lembre de importar a versão atualizada)
– Mude o compilador da aplicação para Google api
em >> botão direito>>Propert>>Android >> escolha Google apis com api level 17 ou 19.
– Na activity do map import
com.google.android.gms.maps.MapFragment.
– Não se esqueça de adicionar o meta data
meta-data android:name=”com.google.android.gms.version” android:value=”@integer/google_play_services_version” /
No Manifest, dentro da tag aplication
Olá, eu estou com mesmo erro, já fiz o que foi dito e nada, ele apresenta o seguinte erro no MapFragment: MapFragment cannot be resolved to a variable.
Possíveis soluções para este problema são:
– Tente atualizar o google play services no sdk manager. (Após atualizar, lembre de importar a versão atualizada)
– Mude o compilador da aplicação para Google api
em >> botão direito>>Propert>>Android >> escolha Google apis com api level 17 ou 19.
– Na activity do map import
com.google.android.gms.maps.MapFragment.
– Não se esqueça de adicionar o meta data
meta-data android:name=”com.google.android.gms.version” android:value=”@integer/google_play_services_version” /
No Manifest, dentro da tag aplication
Muito legal. Funcionou. Mas não consegui achar ainda em lugar algum como coletar as informações e levar para outro layout.
Por exemplo: Quero levar apenas a distância de ponto a ponto, para fazer cálculo em outra class depois.
Abraços,
Não sei se entendi bem sua dúvida, mas se o problema é enviar seus dados entre a activity do mapa e uma outra activity você pode usar os extras da intent. Como por exemplo:
No Mapa:
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra(“TAG”, “Informacao_que_eu quero_enviar”);
Para receber na segunda activity:
Intent intent = getIntent();
String informacao = intent.getStringExtra(“TAG”);
Aqui usei string, mas outros tipos podem ser usados.
Boa Noite Senhores….Alguém de vocês pode me ajudar quero fazer com que o usuário crie pontos no mapa sei que utiliza-se o método setOnMarkerClickListener ou setOnMapLongClickListener mas estou com dificuldade de desenvolver isso vcs podem me ajuda com alguma dica……desde já agradeço abrçç