2013-07-09 9 views
12

私のアプリにgoogle map api v2を表示しています。私はマップにいくつかのマーカーを設定しました。 マーカーをクリックすると表示されるマーカーにもタイトルとスニペットを設定しました。マーカーテキストのクリックイベントを取得するには

今、マーカーのタイトルではなくマーカー自体をクリックすると、新しいアクティビティが呼び出されます。

map.setOnMarkerClickListner 

は、マーカーのクリックでのみ呼び出されます。

しかし、私はそれをしたくありません。私はマーカーにマーカーのクリックでタイトルとスニペットを表示したいが、タイトルのクリックで新しいアクティビティを呼びたい。

どうすればいいですか?

おかげ

+0

可能重複[Androidのマーカーをクリックして機能](http://stackoverflow.com/questions/15455815/android-marker-click-function) – bummi

答えて

25

あなたinfoContentsウィンドウをクリックあなたがやりたいリスナーをウェイクするように、あなたのgetInfoContents方法でsetOnInfoWindowClickListenerを実装する必要があり、これを達成するために、あなたはそうのようにそれを実行します。

map.setInfoWindowAdapter(new InfoWindowAdapter() { 

      // Use default InfoWindow frame 
      @Override 
      public View getInfoWindow(Marker args) { 
       return null; 
      } 

      // Defines the contents of the InfoWindow 
      @Override 
      public View getInfoContents(Marker args) { 

       // Getting view from the layout file info_window_layout 
       View v = getLayoutInflater().inflate(R.layout.info_window_layout, null); 

       // Getting the position from the marker 
       clickMarkerLatLng = args.getPosition(); 

       TextView title = (TextView) v.findViewById(R.id.tvTitle); 
       title.setText(args.getTitle()); 

       map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {   
        public void onInfoWindowClick(Marker marker) 
        { 
         if (SGTasksListAppObj.getInstance().currentUserLocation!=null) 
         { 
          if (String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && 
            String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLongitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8))) 
          { 
           Toast.makeText(getApplicationContext(), "This your current location, navigation is not needed.", Toast.LENGTH_SHORT).show(); 
          } 
          else 
          { 
           FlurryAgent.onEvent("Start navigation window was clicked from daily map"); 
           tasksRepository = SGTasksListAppObj.getInstance().tasksRepository.getTasksRepository(); 
           for (Task tmptask : tasksRepository) 
           { 
            String tempTaskLat = String.valueOf(tmptask.getLatitude()); 
            String tempTaskLng = String.valueOf(tmptask.getLongtitude()); 

            Log.d(TAG, String.valueOf(tmptask.getLatitude())+","+String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)); 

            if (tempTaskLat.contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && tempTaskLng.contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8))) 
            { 
             task = tmptask; 
             break; 
            } 
           } 

           Intent intent = new Intent(getApplicationContext() ,RoadDirectionsActivity.class); 
           intent.putExtra(TasksListActivity.KEY_ID, task.getId()); 
           startActivity(intent); 

          } 
         } 
         else 
         { 
          Toast.makeText(getApplicationContext(), "Your current location could not be found,\nNavigation is not possible.", Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 

       // Returning the view containing InfoWindow contents 
       return v; 

      } 
     }); 

marker.showInfoWindow(); 

タイトルをクリックしてリスナーを設定するには:マーカーの上にタイトルを設定するには

+0

どうもありがとう:)それは働いていたが! – Gaurav

+0

あなたは@Gauravを歓迎します。いいコーディングがあります。 –

+0

Heloo emil Adz、 hw cn iマーカの詳細を新しいアクティビティに転送するには、そのマーカをクリックしてください。それで助けてください。 –

12
googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

    @Override 
    public void onInfoWindowClick(Marker arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 
+0

2番目のコードスニペットでは、そのメソッドはどこに置かれますか?私はちょうどそれをアクティビティクラスに入れて、 'setOnInfoWindowClickListener'というシンボルを解決できないことを伝え続けます。 –

+0

こんにちは@PatMyron、私は確信していません。リスナーをインポートしましたか?正確にどこにコードを配置していますか? –

+0

リスナーをインポートする必要があります。 –

0
/** 
* adding individual markers, displaying text on on marker click on a 
* bubble, action of on marker bubble click 
*/ 
private final void addLocationsToMap() { 
    int i = 0; 
    for (Stores store : storeList) { 
     LatLng l = new LatLng(store.getLatitude(), store.getLongtitude()); 

     MarkerOptions marker = new MarkerOptions() 
       .position(l) 
       .title(store.getStoreName()) 
       .snippet("" + i) 
       .icon(BitmapDescriptorFactory 
         .defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); 
     googleMap.addMarker(marker); 
     ++i; 
    } 

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

     @Override 
     public void onInfoWindowClick(Marker marker) { 

      try { 
       popUpWindow.setVisibility(View.VISIBLE); 
       Stores store = storeList.get(Integer.parseInt(marker 
         .getSnippet())); 

       // set details 
       email.setText(store.getEmail()); 
       phoneNo.setText(store.getPhone()); 
       address.setText(store.getAddress()); 

       // setting test value to phone number 
       tempString = store.getPhone(); 
       SpannableString spanString = new SpannableString(tempString); 
       spanString.setSpan(new UnderlineSpan(), 0, 
         spanString.length(), 0); 
       phoneNo.setText(spanString); 

       // setting test value to email 
       tempStringemail = store.getEmail(); 

       SpannableString spanString1 = new SpannableString(tempStringemail); 
       spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0); 
       email.setText(spanString1); 

       storeLat = store.getLatitude(); 
       storelng = store.getLongtitude(); 

      } catch (ArrayIndexOutOfBoundsException e) { 
       Log.e("ArrayIndexOutOfBoundsException", " Occured"); 
      } 

     } 
    }); 

} 
4
GoogleMap mGoogleMap; 
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 

        @Override 
        public void onInfoWindowClick(Marker arg0) { 
         Intent intent = new Intent(getBaseContext(), Activity.class); 
         String reference = mMarkerPlaceLink.get(arg0.getId()); 
         intent.putExtra("reference", reference); 

         // Starting the Activity 
         startActivity(intent); 
         Log.d("mGoogleMap1", "Activity_Calling"); 
        } 
       }); 
関連する問題