0

Ich habe diese Anwendung, wo ich ein Pint meine Karte und den Breiten- und Längengrad der Pin habe ich gerade gedrückt, aber wenn ich auf die Karte klicken möchte die Anwendung nicht erkennen Sie den Hahn, wie auch immer, heren meinen Code:Android - Google Maps V2 funktioniert nicht mit Fused Location

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, 
     GoogleMap.OnMapClickListener, 
     View.OnClickListener, 
     GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener { 

GoogleMap mMap; 
Double latitud, longitud; 
Marker marker; 
Button buttonAgregarUbicacion; 
protected GoogleApiClient mGoogleApiClient; 
protected Location mLastLocation; 



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


    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
    checkGpsEnable(locationManager); 
    buildGoogleApiClient(); 



    buttonAgregarUbicacion = (Button) findViewById(R.id.button_agregar_ubicacion); 

    buttonAgregarUbicacion.setOnClickListener(this); 


} 

protected synchronized void buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
} 




private void checkGpsEnable(LocationManager locationManager) { 
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) && 
      !locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setMessage("Al parecer no tienes el GPS activado, para mejorar la experiencia enciéndolo.") 
       .setCancelable(false) 
       .setPositiveButton("Activar GPS", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           Intent callGPSSettingIntent = new Intent(
             Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
           startActivity(callGPSSettingIntent); 
          } 
         }); 
     alertDialogBuilder.setNegativeButton("Cancelar", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
         finish(); 
        } 
       }); 
     AlertDialog alert = alertDialogBuilder.create(); 
     alert.show(); 
    } 
} 



@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.getUiSettings().setMyLocationButtonEnabled(true); 
    mMap.setMyLocationEnabled(true); 

    if (mLastLocation != null) { 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
       new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude()), 200)); 

     CameraPosition cameraPosition = new CameraPosition.Builder() 
       .target(new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude())) 
       .zoom(17) 
       .build(); 
     mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

    } 


} 



@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.button_agregar_ubicacion: 

      if (latitud == null) { 
       Toast.makeText(MapsActivity.this, "Pon un pin en el mapa", Toast.LENGTH_SHORT).show(); 
      } else { 

       Intent intent = new Intent(this, CreateReportActivity.class); 
       intent.putExtra("latitud", latitud); 
       intent.putExtra("longitud", longitud); 
       startActivity(intent); 
       finish(); 

      } 

      break; 
    } 
} 


@Override 
public void onConnected(Bundle connectionHint) { 
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
    onMapReady(mMap); 

} 

@Override 
public void onConnectionSuspended(int i) { 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 

@Override 
protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

@Override 
public void onMapClick(LatLng latLng) { 
    mMap.clear(); 
    marker = mMap.addMarker(new MarkerOptions() 
      .position(latLng).title("¿Aquí?")); 
    mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
    latitud = latLng.latitude; 
    longitud = latLng.longitude; 
} 

} Wie auch immer, wenn ich Debug tun, und ich habe Haltepunkt in der Methode onMapClick müssen nicht dort aufhört, habe ich verwendet, um diese und gearbeitet, aber ich habe nicht fusionierten Standort umgesetzt bis heute und ich habe dieses Problem.

Ich wäre wirklich dankbar, dass jemand mir dabei helfen könnte.

Danke.

Antwort

1

Sie haben vergessen, die GoogleMap.OnMapClickListener für die Karte festzulegen.

Fügen Sie diese auf Ihre onMapReady:

mMap.setOnMapClickListener(this); 
+0

ich jetzt wirklich, wirklich dumm fühlen, ich danke Ihnen sehr @antonio – miguelacio

Verwandte Themen