0

私はこのアプリケーションを使用して、私の地図をパイントして、ちょうど押されたピンの緯度と経度を取得する必要がありますが、 HERESに、とにかく、タップを認識し、私のコード:Android - GoogleマップV2は融合位置では動作しません

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; 
} 

} 私はデバッグを行う、と私はそこに停止しdoesntの方法onMapClickにブレークポイントを置くときとにかく、私はこれを使用して働いていたが、私は実装融合した場所をdidntのき今日まで私はこの問題を抱えています。

私は本当にありがとうと思います。

ありがとうございました。

答えて

1

マップにGoogleMap.OnMapClickListenerを設定しています。

は、あなたのonMapReadyにこれを追加します。

mMap.setOnMapClickListener(this); 
+0

私はどうもありがとうございました、今本当に愚かな感じ@antonio – miguelacio

関連する問題