1

Android StudioでGoogle Maps APIと連携するAndroidアプリケーションを作成しようとしています。私は選択したLatLng位置にマップにマーカーを追加しました。
マーカーをクリックすると、 "Testing"というタイトルが表示されます。しかし、私が望むのは、ユーザーがマーカーのタイトルをクリックしたときに、新しいアクティビティを開く必要があるということです。しかし、私はそれを動作させるように見えることはできません。 onMarkerClickを追加しましたが、実装できません。私は本当に混乱しています。私はコールバックメソッドを追加しようとしましたが、どうすればよいか分かりません。
正しいコードを教えてもらえますか?大変ありがとうございました!Android StudioでonMarkerClickを使用して新しいアクティビティを開く方法

package com.msp.googlemapsproject; 

import android.content.Intent; 
import android.os.Bundle; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
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 android.support.v4.app.FragmentActivity 
     implements GoogleMap.OnMarkerClickListener { 

    static final LatLng MyHome = new LatLng(-29.759933, 30.801030); 
    private GoogleMap googleMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     googleMap.setOnMarkerClickListener(this); 

     try{ 

      if (googleMap == null) { 

       googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

      } 

      googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 

      googleMap.setMyLocationEnabled(true); 

      googleMap.setTrafficEnabled(true); 

      googleMap.setIndoorEnabled(true); 

      googleMap.setBuildingsEnabled(true); 

      googleMap.getUiSettings().setZoomControlsEnabled(true); 

      final Marker MyHome_display = googleMap.addMarker(new MarkerOptions().position(MyHome).title("Testing")); 


     } catch (Exception e) { 

      e.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean onMarkerClick(Marker marker) { 
     if (marker.equals(MyHome)) 
     { 
      Intent intent = new Intent(MainActivity.this, LastScreen.class); 
      startActivity(intent); 
     } 
     return false; 
    } 
} 

答えて

1

あなたはマーカーや緯度経度をテストしているので、条件は常に偽であるので、私はあなたの問題は、あなたの場合の条件だと思います。この

googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
      @Override 
      public void onInfoWindowClick(Marker marker) { 
       Intent intent = new Intent(MainActivity.this, LastScreen.class); 
       startActivity(intent); 
      } 
     }); 
+0

がスローされます、それはシンボルを解決できない」、と言います'マーカー'"。 – MSP

+0

http://stackoverflow.com/questions/16677929/android-google-map-v2-starting-activity-when-clicking-on-marker-infowindow このリンクをチェックすると、あなたに同じ問題が発生する – SFAH

+0

これは現在機能しています、 すみません。あなたのコードは正しかった、私はそれを間違って挿入した!とても有難い! – MSP

0

をお試しください:

あなたが

を試すことができます
@Override 
    public boolean onMarkerClick(Marker marker) { 
     if (marker.getTitle().equals("Testing")) 
     { 
      Intent intent = new Intent(MainActivity.this, LastScreen.class); 
      startActivity(intent); 
     } 
     return false; 
    } 
+0

私は@アンドロイドコードを使用し、それは働いたが、あなたの助けに感謝! – MSP

0

アクティビティを切り替えるには、インテントを使用します。

Intent intent = new Intent(MainActivity.this, LastScreen.class); 
startActivity(intent); 

マニフェストでの活動を宣言することを忘れないでください、またはそれは「『setOnInfoWindowClickListener』記号を解決できない」、エラー私は私のコードでエラーが発生します

+0

@androidコードを使っていましたが、うまくいきましたが、助けてくれてありがとう! – MSP

0
$try like this: 

public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     // Add a marker in Sydney and move the camera 
     LatLng chennai = new LatLng(12.9671, 80.2593); 
     mMap.addMarker(new MarkerOptions().position(chennai).title("Chennai")); 

     LatLng perungudi = new LatLng(12.97, 80.25); 
     mMap.addMarker(new MarkerOptions().position(perungudi).title("Perungudi")); 

     LatLng pallikarnai = new LatLng(12.9377, 80.2154); 
     mMap.addMarker(new MarkerOptions().position(pallikarnai).title("Pallikarnai")); 

     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(chennai,12)); 
     mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
      @Override 
      public boolean onMarkerClick(Marker marker) { 
       if (marker.getTitle().equals("Chennai")){ 
        Toast.makeText(MapsActivity.this, "Clicked"+marker.getTitle(), Toast.LENGTH_SHORT).show(); 
       } 
       return false; 
      } 
     }); 

    } 
関連する問題