>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Mapa em branco


Pessoal,

Quando em clico em um item do "Listar Vendas", o mapa aparece em branco. Já pesquisei bastante e tentei várias coisas, sem sucesso. Inclusive vi que é um problema bem comum.

nullnullO que ja fiz/tentei:
- No Goggle Apis Console, ativei o serviço "Google Maps API v3"
- Gerei chaves debug e release, utilizando o certificado SHA1
- Coloquei os uses-permission de ACCESS_FINE_LOCATION; INTERNET e READ_GSERVICES no Manifest
- Coloquei o uses-library do Maps no Manifest

nullnullSegue meu código:

nullnulllistar_vendas_activity.xml

[XML] xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ListarVendasActivity" >

android:id="@+id/ltwVendas"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >



[/XML]

*************************************
mapa.xml
[XML]

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

android:id="@+id/mapa_view"
android:enabled="true"
android:clickable="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="AIzaSyDSJVGKZGCP7mRWo7gIVkXYvcJsLz1hvT0"
/>


[/XML]
*************************************

MapShowActivity.java


package br.com.vinnamaral.vendas;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

public class MapShowActivity extends MapActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapa);

MapView map = (MapView)findViewById(R.id.mapa_view);

map.setBuiltInZoomControls(true);
map.displayZoomControls(true);

Intent it = getIntent();
int latitude = (int)(it.getDoubleExtra("latitude", 0)*1E6);
int longitude = (int)(it.getDoubleExtra("longitude", 0)*1E6);

MapController mc = map.getController();

mc.animateTo(new GeoPoint(latitude, longitude));
mc.setZoom(30);
map.invalidate();
}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}

*************************************

ListarVendadsActivity.java

package br.com.vinnamaral.vendas;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class ListarVendasActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listar_vendas_activity);

SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

ListView ltwVendas = (ListView)findViewById(R.id.ltwVendas);


Cursor c = db.rawQuery("SELECT vendas._id, vendas.preco, vendas.la, vendas.lo, produtos.nome FROM vendas INNER JOIN produtos on produtos._id = vendas.produto", null);

String[] from = {"_id", "preco", "nome", "la", "lo"};
int[] to = {R.id.txvID_listar, R.id.txvPreco_listar, R.id.txvNome_listar, R.id.txvLatitude_listar, R.id.txvLongitude_listar};

SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(), R.layout.listar_vendas_model, c, from, to);

ltwVendas.setAdapter(ad);

ltwVendas.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView ad, View v, int position, long id) {
SQLiteCursor c = (SQLiteCursor)ad.getAdapter().getItem(position);
Intent it = new Intent(getBaseContext(), MapShowActivity.class);
it.putExtra("latitude", c.getDouble(c.getColumnIndex("la")));
it.putExtra("longitude", c.getDouble(c.getColumnIndex("lo")));
startActivity(it);
}
});

db.close();
}
}

*************************************

AndroidManifest.xml
[XML]

package="br.com.vinnamaral.vendas"
android:versionCode="1"
android:versionName="1.0" >

android:minSdkVersion="8"
android:targetSdkVersion="8" />





android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

android:name="br.com.vinnamaral.vendas.MainActivity"
android:label="@string/app_name" >








android:label="@string/title_activity_listar_vendas" >





/







[/XML]



5 Respostas


Tentei editar o tópico mas não achei a opção.

Esqueci de comentar que todos os meus testes é feito direto no celular, um Galaxy S3, com internet, GPS e localização ativados.




Vinicius

Peço que assista a vídeo nova de Maps que tem no curso, ela é quase a última.

Nela é mostrada o novo GMaps. Por isso pode acontecer o erro citado por você.




Olá Rafael,

Assisti a vídeo aula 10, conforme você me orientou.

Criei o projeto ExemploMaps, seguindo todos os passos descritos.

Porém, ao tentar executar no meu celular (Galaxy S3), a aplicação para e fecha. Ao ver o log, encontrei isso "Could not find google-play-services_lib.apk"

Cliquei com o botão direito em cima do projeto e fui em Properties > Android e vi que a library do google-play-services estava com um "x" de erro. Percebi que o erro era porque ele tava invertendo as barras do caminho (C:\Development\adt-bundle...etc). Removi e adicionei novamente, e ele adicionou correto (C:/Development/adt-bundle...etc). Cliquei em "apply" e dei um "ok". Porém, quando eu volto para checar se esta correto, novamente a barra ta invertida e tem um "x" de erro. Será que é isso que tá ocasionando o "Could not find google-play-services_lib.apk"??

Como eu poderia resolver?




Eu consegui fazer funcionar o exercicio de exemplo da Aula 10. Basicamente, quando eu importei o google-play-services, tem que deixar checado a opção "create into workspace". Usei o capítulo de Google Maps do livro Google Android do Lecheta para descobrir isso.

Com o exemplo da vídeo-aula 10 funcionando, exportei tudo que eu havia feito no projeto Vendas para este projeto e agora tudo esta funcionando.

Com uma ressalva, não é mais necessário multiplicar por 1E6 a longitude e latitude.

A clase MapShowActivity ficou bem mais enxuta e simples


package au.com.vinnamaral.vendas;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import au.com.vinnamaral.vendas.R;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapShowActivity extends FragmentActivity {

private GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapa);

map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

Intent it = getIntent();
LatLng location = new LatLng(it.getDoubleExtra("latitude", 0), it.getDoubleExtra("longitude", 0));

map.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 20));

map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

}
}




Opa

Ótimo.

Exato, na aula 10, inclusive o exemplo já não tem mais a multiplicação nas coordenadas.