2017-12-13 14 views
1

私は、マーカーのクリック方法で一連のマップアクティビティを持っています。クリックするとマーカーがデータベースから追​​加され、新しいActivityが開きます。私が抱えている問題は、現在の場所を別のクリックイベントにすることです。Googleマップのマーカーのクリックイベントのアクションが異なります。api

2番目のマーカー(marker2)を作成しようとしましたが、それを使用していますが、これを正しく処理しているとは思われません。以下のコードはHashmapで解決しようとしていますが、正しくできないようです。私は他の部分と同じデータベースから詳細を見つけようとしませんが、何も続くとアプリがクラッシュし、ビールのアプリが停止し続けると言うことの原因となっている現在の場所をクリックしてください

//This is the onclick method- i tried using an if statment if the value is not there to call the second marker. 
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

      @Override 
      public boolean onMarkerClick(Marker marker) { 

       String venueID = mMarkerMap.get(marker.getId()); 
       String venueName = marker.getTitle(); 
       Intent intent = new Intent(MapsActivity.this, viewbeverageActivity.class); 
       intent.putExtra(VENUE_NAME, venueName); 
       intent.putExtra(VENUE_ID, venueID); 
       startActivity(intent); 

       if(venueID == null) 
       { 
        onMarkerClick2(marker2); 
       } 

       return false; 
      } 

      public boolean onMarkerClick2(Marker marker2) { 

       mMap2.getClass(); 

       return false; 
      } 
     }); 


//This is the location listener for the current location 
public boolean onMarkerClick(Marker marker) { 
     return false; 
    } 

    private class MyLocationListener implements LocationListener{ 

     public void onLocationChanged (Location loc){ 
      if (loc != null){ 
       Toast.makeText(getBaseContext(), 
         "Current Location : Lat: " + loc.getLatitude() + 
           " Lng: " + loc.getLongitude(), Toast.LENGTH_LONG); 
       LatLng p = new LatLng(loc.getLatitude(), loc.getLongitude()); 
       Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); 
       List<Address> addresses = null; 

       String add = ""; 
       try { 
         //String placeName = "YOU ARE HERE"; 
        addresses = geoCoder.getFromLocation(loc.getLatitude(), loc.getLongitude(),1); 
        Address address = addresses.get(0); 

        if (addresses.size() > 0) { 
         for (int i = 0; i <= address.getMaxAddressLineIndex(); i++) 
          add += address.getAddressLine(i) + "\n"; 
         // mMap2.addMarker(new MarkerOptions().position(p).title("You Are Here")); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       mMap2.addMarker(new MarkerOptions() 
         .position(p) 
         .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)) 
         .title("YOU ARE HERE ") 
         .snippet(KEY + "Population: 4,137,400")); 
       // mMap.addMarker(new MarkerOptions().position(p).title("YOU ARE HERE")); 
       mMap2.moveCamera(CameraUpdateFactory.newLatLngZoom(p, 12.0f)); 
      } 
     } 

。クリックセクションのesle声明に達するが、私はちょうどそのmehtodのうちのいくつかの方法を知っていて、あなたはこのようにタグを設定することができ

答えて

0

第二のクリックを継続する必要があります。

Marker marker = new Marker() ; 
marker.setTag(position);// you can give ArrayList position and then get in on marker click method. 
関連する問題