Autore Topic: Problema con le Mappe  (Letto 641 volte)

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Problema con le Mappe
« il: 03 Giugno 2014, 16:12:36 CEST »
0
Ciao ragazzi,
dovrei realizzare un'applicazione che in base ad una "categoria" mi fornisce le coordinate GPS di tutti i POI in un determinato raggio di azione.
Per esempio :
Seleziono la categoria : BANCA
e mi restituisce le coordinate GPS di tutte le banche nel raggio di 1KM.

Il mio problema è ancora prima di iniziare. In pratica ho creato questa semplice applicazione ma non mi parte :
MANIFEST
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.androidmapsv2"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="16" />
   
    <permission
       android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE"
       android:protectionLevel="signature"></permission>
    <uses-permission
       android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE"/>
    <uses-permission
       android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission
       android:name="android.permission.INTERNET"/>
    <uses-permission
       android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <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/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <meta-data
           android:name="com.google.android.maps.v2.API_KEY"
           android:value="AIzaSyBD9fsiMd_G9Pzeq2Eqas2FwJjzMGbSOnA"/>
        <activity
           android:name="com.example.androidmapsv2.MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MAIN ACTIVITY
Codice (Java): [Seleziona]
package com.example.androidmapsv2;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

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

}

LAYOUT
Codice (XML): [Seleziona]
<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=".MainActivity" >

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       android:text="@string/hello_world" />
    <fragment
       android:id="@+id/map"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       class="com.google.android.gms.maps.MapFragment"/>

</RelativeLayout>


In pratica ho questo problema :
LOGCAT
Codice (Java): [Seleziona]
06-03 16:11:04.815: E/AndroidRuntime(15262): FATAL EXCEPTION: main
06-03 16:11:04.815: E/AndroidRuntime(15262): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidmapsv2/com.example.androidmapsv2.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread.access$700(ActivityThread.java:154)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.os.Looper.loop(Looper.java:137)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread.main(ActivityThread.java:5306)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at java.lang.reflect.Method.invokeNative(Native Method)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at java.lang.reflect.Method.invoke(Method.java:511)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at dalvik.system.NativeStart.main(Native Method)
06-03 16:11:04.815: E/AndroidRuntime(15262): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:342)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.Activity.setContentView(Activity.java:1928)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.example.androidmapsv2.MainActivity.onCreate(MainActivity.java:11)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.Activity.performCreate(Activity.java:5255)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
06-03 16:11:04.815: E/AndroidRuntime(15262):    ... 11 more
06-03 16:11:04.815: E/AndroidRuntime(15262): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4452000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.common.GooglePlayServicesUtil.t(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.internal.u.B(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.internal.u.A(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.MapFragment$b.ip(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.MapFragment$b.a(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.dynamic.a.a(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.app.Activity.onCreateView(Activity.java:4857)
06-03 16:11:04.815: E/AndroidRuntime(15262):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:686)
06-03 16:11:04.815: E/AndroidRuntime(15262):    ... 21 more



Potete aiutarmi ? :(

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema con le Mappe
« Risposta #1 il: 03 Giugno 2014, 16:21:07 CEST »
0
te lo dice il logcat:
Citazione
Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 4452000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Problema con le Mappe
« Risposta #2 il: 03 Giugno 2014, 17:11:36 CEST »
0
Ciao Nicola_D,
innanzitutto grazie per la pronta risposta.
Avevo notato questa cosa ma onestamente non capisco cos'ha il tag che non va
Codice (Java): [Seleziona]
<meta-data
           android:name="com.google.android.maps.v2.API_KEY"
           android:value="AIzaSyBD9fsiMd_G9Pzeq2Eqas2FwJjzMGbSOnA"/>

ho inserito il valore della KEY che mi ha fornito google.
Grazie ancora per l'aiuto.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Problema con le Mappe
« Risposta #3 il: 03 Giugno 2014, 18:53:43 CEST »
0
Nel messaggio che ti ho quotato c'è scritto espressamente che ti manca il tag, e c'è scritto cosa devi mettere!

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Raffyna

  • Utente junior
  • **
  • Post: 104
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
  • Sistema operativo:
    seven
Re:Problema con le Mappe
« Risposta #4 il: 04 Giugno 2014, 11:41:46 CEST »
0
ok ho risolto il problema che avevo. Ora però ho un nuovo problema.
Ho sviluppato una semplice app che preleva le coordinate GPS della posizione attuale, quello che però dovrei fare è ricavare le coordinate GPS di una serie di luoghi identificati per categoria, mi spiego meglio.
Dovrei realizzare una applicazione che preveda questo funzionamento :
inserisco la categoria da cercare : Es. BANCA
mi restituisce le coordinate GPS di tutte le banche che mi circondano.
ma questa parte non saprei come gestirla.
Per il momento ho sviluppato questo codice :
Main Activity
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
      private EditText editText;
       private Button buttonLoad;
       
       private LocationManager lManager;
       private LocationListener lListener;
       private Location location;
      private float[][] results;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      editText = (EditText) findViewById(R.id.editTextShowLocation);
          buttonLoad = (Button) findViewById(R.id.buttonGetLocation);
           buttonLoad.setOnClickListener(new OnClickListener() {
               public void onClick(View v) {
                   buttonLoadClick();
               }
           });
       }
       
       private void getCurrentLocation() {
           
           lManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
           lListener = new LocationListener() {
               
               @Override
               public void onStatusChanged(String provider, int status, Bundle extras) {
                   // TODO Auto-generated method stub
               }
               
               @Override
               public void onProviderEnabled(String provider) {
                   // TODO Auto-generated method stub
               }
               
               @Override
               public void onProviderDisabled(String provider) {
                   // TODO Auto-generated method stub
               }
               
               @Override
               public void onLocationChanged(Location loc) {
                   // TODO Auto-generated method stub
                   location = loc;
                   Log.i("Location"," : "+location);
               }
           };
           lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);
       }
       
       
       private void buttonLoadClick() {
           
           this.getCurrentLocation();
           
           if  ( location != null ) {
               
                        lManager.removeUpdates(lListener);
                         
                        String provider   = location.getProvider();
                        String data          = DateFormat.format("dd/MM/yyyy", location.getTime()).toString();
                        String longitude  = "Longitudine: " + location.getLongitude();
                        String latitude     = "Latitudine: " + location.getLatitude();
                        String altitudine  = "Altitudine: " + location.getAltitude();
                        String accuracy   = "Precisione: " + location.getAccuracy();
                     
                        //Calcolo distanza tra due punti          
                        float[] results = new float[1];
                     Location.distanceBetween(location.getLatitude(), location.getLongitude(), 40.843546, 14.230981,results);
                                   
                     Log.i("DISTANZA:",""+results[0]);
                          Log.i("provider"," : "+provider);
                        Log.i("data"," : "+data);
                        Log.i("longitude"," : "+longitude);
                        Log.i("latitude"," : "+latitude);
                        Log.i("altitudine"," : "+altitudine);
                        Log.i("accuracy"," : "+accuracy);
                       
                        editText.setText("Oggi è il " + data + "nn"
                        + "Informazioni fornite da: " + provider + "nn"
                        + longitude + "n" + latitude + "n" + altitudine + "n"
                        + accuracy + "n"
                        + "La distanza tra Roma e Napoli è "+ results[1]);
                       
               } else {                
                  editText.setText("Impossibile determinare la locazione! GPS non agganciato al satellite.");
                 
               }
       }
   }

Potreste darmi una mano ?
Grazie in anticipo.

Offline lucab

  • Nuovo arrivato
  • *
  • Post: 49
  • Respect: +10
    • Mostra profilo
    • Lucabportal
  • Dispositivo Android:
    Nexus 5 - Nexus One
  • Play Store ID:
    Luca Biasotto
  • Sistema operativo:
    Mac OS X
Re:Problema con le Mappe
« Risposta #5 il: 13 Giugno 2014, 14:11:07 CEST »
0
Ciao Raffyna,

per problemi di questo tipo io ho risolto usando le Google Place API: https://developers.google.com/places/documentation/

Fai delle semplici richieste http che ti rispondono con un JSON, unica nota a cui devi fare attenzione è che ti ritornano al più 20 luoghi indipendentemente dal raggio di ricerca, quindi se vuoi trovare i punti più vicini ti consiglio di usare un raggio di ricerca piccolo.

Ciao ;)
Le occasioni arrivano una volta sola, se non le afferri al volo passeranno altri alla storia.