2013-05-07 3 views
0

Je suis essayer de montrer l'emplacement actuel en utilisant android google map api 2, je cours cela sur mon téléphone qui est wifi activer.Google Map API 2 ne montre pas l'emplacement actuel

Mais il montre toujours Longitude et Latitude 0.0, 0.0.

Voici mon code

package com.google.map; 

    import com.google.android.gms.common.ConnectionResult; 
    import com.google.android.gms.common.GooglePlayServicesUtil; 
    import com.google.android.gms.maps.CameraUpdateFactory; 
    import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener; 
    import com.google.android.gms.maps.MapFragment; 
    import com.google.android.gms.maps.model.CameraPosition; 
    import com.google.android.gms.maps.model.LatLng; 
    import com.google.map.R; 

    import android.location.Criteria; 
    import android.location.Location; 
    import android.location.LocationListener; 
    import android.location.LocationManager; 
    import android.os.Bundle; 
    import android.annotation.SuppressLint; 
    import android.app.Activity; 
    import android.app.Dialog; 
    import android.app.FragmentManager; 
    import android.content.Intent; 
    import android.util.Log; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.widget.Toast; 

    public class MainActivity extends Activity implements LocationListener{ 

private GoogleMap googlemap; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if(isGooglePlay()) 
    { 
     setContentView(R.layout.activity_main); 
     setUpMap(); 
    } 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    if(item.getItemId() == R.id.action_legalnotices) 
    { 
     startActivity(new Intent(this, LegalNoticesActivity.class)); 
    } 
    return super.onOptionsItemSelected(item); 
} 

private boolean isGooglePlay() 
{ 
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 

    if(status == ConnectionResult.SUCCESS) 
    { 
     return true; 
    } 
    else 
    { 
     ((Dialog)GooglePlayServicesUtil.getErrorDialog(status, this, 10)).show(); 
     Toast.makeText(getApplicationContext(), "Google play is not available.", Toast.LENGTH_LONG).show(); 
    } 
    return false; 
} 

@SuppressLint("NewApi") private void setUpMap() 
{ 
    if(googlemap == null) 
    { 
     googlemap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     if(googlemap != null) 
     { 
      // map code 
      googlemap.setMyLocationEnabled(true); 

      googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

      LocationManager lo = (LocationManager) getSystemService(LOCATION_SERVICE); 

      String provider = lo.getBestProvider(new Criteria(),true); 


      if(provider == null) 
      { 
       onProviderDisabled(provider); 
      } 
      else 
      { 
       onProviderEnabled(provider); 
      } 

      Location loc = lo.getLastKnownLocation(provider); 

      if(loc != null) 
      { 
       onLocationChanged(loc); 
      } 


      googlemap.setOnMapLongClickListener(onLongClickMapSettings()); 
     } 
    } 
} 


private OnMapLongClickListener onLongClickMapSettings() { 
    // TODO Auto-generated method stub 
    return new OnMapLongClickListener() { 

     @Override 
     public void onMapLongClick(LatLng arg0) { 
      // TODO Auto-generated method stub 
      Log.i(arg0.toString(),"Long Click"); 
     } 
    }; 
} 


@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    LatLng latlng = new LatLng(location.getLatitude(),location.getLongitude()); 

    googlemap.moveCamera(CameraUpdateFactory.newLatLng(latlng)); 
    googlemap.moveCamera(CameraUpdateFactory.zoomTo(5)); 

} 


@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 

} 


@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
    Location lo = new Location(provider); 

    LatLng latlng = new LatLng(lo.getLatitude(),lo.getLongitude()); 

    Log.i(latlng.toString(),"Current Location"); 
    googlemap.moveCamera(CameraUpdateFactory.newLatLng(latlng)); 
    googlemap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 5)); 

} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 

} 
    } 

Voici la valeur de chat journal de mon application android.

05-07 22:16:31.636: I/lat/lng: (0.0,0.0)(17967): Current Location 
+0

ont ajouter ceci fichier manifest Raghunandan

+0

Il fonctionne lorsque vous modifiez l'emplacement signifie déplacer votre appareil sur une courte distance puis onchangelocation() d'appel automatiquement. –

+0

Les services de localisation sont-ils activés sur votre téléphone? – Androiderson

Répondre

0

Déplacer votre code Log.i(latlng.toString(),"Current Location"); à la onLocationChanged -method, vous ne disposez pas d'un emplacement encore onProviderEnabled.

0
mMap.setMyLocationEnabled(true); // just add one line it wil work. 
+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire en dessous de son message - vous pouvez toujours commenter vos propres messages, et une fois que vous aurez suffisamment de [réputation] (http://stackoverflow.com/help/whats-reputation) vous pourrez être capable de [commenter sur n'importe quel post] (http://stackoverflow.com/help/privileges/comment). –

+0

Google map api v2 nous fournit cette fonctionnalité .. quand l'emplacement de l'utilisateur sera changé, il sera automatiquement mis à jour..si désactiver puis il définira comme dernier emplacement ..... –