2016-09-17 3 views
0

Я пытаюсь использовать onMarkerClick whcih позволяет пользователям просматривать новое действие/окно, пока они нажимают на markers. Если вы хотите изменить двойной щелчок markers вместо щелчка. Что мне делать?Как открыть новую активность с помощью маркера двойного щелчка для приложения Google Google Map?

Это мой код:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMarkerClickListener { 

private Marker myMarker; 

ChildEventListener mChildEventListner; 
DatabaseReference mProfileRef = FirebaseDatabase.getInstance().getReference("Profile"); 


@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); 

} 


@Override 
public void onMapReady(GoogleMap googleMap) { 

    googleMap.setOnMarkerClickListener(this); 

    LatLng wollongong = new LatLng(-34.506081, 150.88104); 
    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(wollongong, 18)); 
    googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 

    addMarkersToMap(googleMap); 

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     return; 
    } 
    googleMap.setMyLocationEnabled(true); 
} 

@Override 
public void onStop(){ 
    if(mChildEventListner != null) 
     mProfileRef.removeEventListener(mChildEventListner); 
    super.onStop(); 
} 

public void addMarkersToMap(final GoogleMap map){ 
    mChildEventListner = mProfileRef.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      FirebaseMarker marker = dataSnapshot.getValue(FirebaseMarker.class); 
      String dob = marker.getDob(); 
      String dod = marker.getDod(); 
      double latitude = marker.getLatitude(); 
      double longitude = marker.getLongitude(); 
      String firstname = marker.getFirstname(); 
      String lastname = marker.getLastname(); 

      LatLng location = new LatLng(latitude,longitude); 
      map.addMarker(new MarkerOptions().position(location).title(firstname +" "+ lastname).snippet(dob +" - "+ dod).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 

     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 



@Override 
public boolean onMarkerClick(Marker marker) { 

    if (marker.equals(myMarker)) 
    { 
     Intent intent = new Intent(MapsActivity.this,Info_window.class); 
     startActivity(intent); 
    } 
    else 
    { 
     Intent intent = new Intent(MapsActivity.this,Info_window.class); 
     startActivity(intent); 
    } 
    return false; 
} 

Может кто-нибудь помочь мне с этим? Большое спасибо!

+0

вы хотите открыть деятельность по двойному щелчку маркера? –

+0

Да. Я хочу дважды щелкнуть маркер, чтобы открыть новую активность. –

ответ

4

и поставить это на глобальную переменную

boolean doubleBackToExitPressedOnce = false; 

редактировать вы код внутри onMarkerClick, как показано ниже:

if (doubleBackToExitPressedOnce) { 
       Intent intent = new Intent(MapsActivity.this,Info_window.class); 
     startActivity(intent); 

      } else { 
       this.doubleBackToExitPressedOnce = true; 
       new Handler().postDelayed(new Runnable() { 

        @Override 
        public void run() { 
         doubleBackToExitPressedOnce = false; 
        } 
       }, 2000); 
      } 
+0

@hanyu li вы попробовали мой ответ? –

+0

Да, Невозможно разрешить символ «Обработчик» –

+0

это будет android.os.Handler или вы можете изменить его на ** новый android.os.Handler ** –