2015-01-16 4 views
0

Добавление Карт Google в проект, и я только что создал проект практики, чтобы его проверить. Я хочу, чтобы иметь возможность щелкнуть маркеры, которые я добавляю, однако я получаю сообщение об ошибке, когда метод onMarkerClick никогда не используется.onMarkerClick никогда не называется?

Мой код:

package uk.co.ryanmoss.cameraproject; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ViewSwitcher; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 


public class MainActivity extends Activity { 
    private ViewSwitcher switcher; 
    private static final int REFRESH_SCREEN = 1; 
    private GoogleMap gMap; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher); 


     Button button1 = (Button) findViewById(R.id.button1); 

     initialiseMap(); 


    } 

    public void initialiseMap(){ 
     if (gMap == null){ 
      gMap = ((MapFragment) getFragmentManager().findFragmentById(
        R.id.map)).getMap(); 
      gMap.setOnMarkerClickListener((GoogleMap.OnMarkerClickListener) this); 
     } 
    } 

    public boolean onMarkerClick(Marker marker){ 
     switcher.showNext(); 
     return false; 
    } 
    public void changeScreen(View view){ 

     switcher.showNext(); 

    } 

    public void changeScreenBack(View view){ 
     switcher.showPrevious(); 
     markerMap(gMap); 

    } 

    public void markerMap(GoogleMap map){ 
     map.addMarker(new MarkerOptions() 
          .position(new LatLng(53.7832138, -2.6556234)) 
          .title("Hello world")) 
          .setIcon(BitmapDescriptorFactory.fromResource(R.drawable.arrowdown)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

} 

ответ

3

Как Байрон говорит, что вы должны сделать это:

gMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 


      return false; 
     } 
}); 
0

Ваш класс не типа GoogleMap.OnMarkerClickListener, как вы указали, здесь с этим параметром:

gMap.setOnMarkerClickListener((GoogleMap.OnMarkerClickListener) this); 

Метод public boolean onMarkerClick(Marker marker) является метод GoogleMap.OnMarkerClickListener интерфейс, но ваш класс - это Activity. Вам нужно создать анонимный класс, содержащий этот метод.

+0

Неверно! Вам просто нужно добавить «внедряет GoogleMap.OnMarkerClickListener» в объявление класса. –

0

Я не знаю, что проблема, но если вы реализующий метод интерфейса на вашем классе GoogleMap.OnMarkerClickListener не работает, но внутри объект работает отлично! нравится @kelvincer говорит до