1

我正嘗試在Android Studio中創建一個適用於Google Maps API的Android應用程序。我已經成功地將地圖上的標記添加到了我選擇的某個LatLng位置。
當標記被點擊時,它會出現一個名爲「測試」的標題。但是我想要的是,當用戶點擊標記標題時,它必須打開一個新的活動。但是,我似乎無法讓它工作。我添加了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

我在我的代碼得到一個錯誤,「不能解析符號‘setOnInfoWindowClickListener’」,它說,「不能解析符號「標記」」。 – 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

我使用@android代碼,它的工作,但感謝您的幫助! – MSP

0

要在活動之間切換,請使用意圖:

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

記住申報清單中的活動,否則就會拋出一個錯誤

+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; 
      } 
     }); 

    }