2017-10-04 103 views
0

我已經使用數據庫動態創建帶有多個標記的Google Map,現在任何人都可以建議我如何單獨創建每個標記的點擊事件?如何處理Google地圖標記點擊?

+0

您打算通過單擊標記來執行什麼事件?小改動都一樣嗎?他們喜歡打開你的應用程序的活動嗎? –

+0

我想在每個標記點擊事件上打開一個新的活動,它將顯示爲一個對話框。 –

回答

0

你可以這樣做

private Marker marker1; 
    marker1 = mMap.addMarker(new MarkerOptions() 
        .position(LatLng(-31.952854, 115.857342)) 
        .title("Title"); 
      marker1.setTag(0); 

    mMap.setOnMarkerClickListener(this); 

,並在實施監聽的

@Override 
    public boolean onMarkerClick(final Marker marker) { 
     //marker.getTag() 
    } 
0

使用此爲多個標記:

首先讓你的應用程序來實現GoogleMap.OnMarkerClickListener然後創建一個標記陣列:

Marker[] marker = new Marker[20]; //change length of array according to you 

然後裏面

onMapReady(){ 
    mMap.setOnMarkerClickListener(this); 
for(int i = 0 ; i < yourMarkerListsize ; i++) { 
     marker[i] = mMap.addMarker(new MarkerOptions() 
     .position(new LatLng(list(i).getLat(), list(i).getLon()) 
     .anchor(0.5f, 0.5f) 
     .title(title) 
     .snippet(snippet) 
     .icon(yourIcon)); 
    } 

然後最後

@Override 
    public boolean onMarkerClick(Marker marker) { 
    //you can get assests of the clicked marker 
    return false; 
} 

希望它可以幫助!

+0

謝謝你的建議,但我需要一個使用Xamarin而不是Java的C#代碼,它是一個Java代碼。 –

0

如果你正在尋找的這個Xamarin代碼,以下是你如何做到這一點

GoogleMaps Gmap;            

GMap.MarkerClick += GMap_MarkerClick; 
GMap.InfoWindowClick += GMap_InfoWindowClick; 

private void GMap_MarkerClick(object sender, GoogleMap.MarkerClickEventArgs e) 
    { 
     Marker marker = e.Marker; 
     marker.ShowInfoWindow(); 
    } 
private void GMap_InfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e) 
    { 

    } 

這是你如何處理xamarin Android的希望都標記和標記信息的窗口中點擊事件這可以幫助你。

+0

謝謝您的建議,但您的代碼只有一個標記值,這是我已經完成的。使用下面的代碼 MarkerOptions options = new MarkerOptions()。SetPosition(latlng).SetTitle(dt.Rows [i] [「rating」]。ToString()+「:Click to request」); GMap.AddMarker(options); GMap.AddMarker(options); GMap = googleMap; –

+0

所以你想要一個代碼插入多個標記我想!? @PrashantBhatt –

+0

是的,我們的谷歌地圖屏幕中有多個標記,我們希望所有標記都有單獨的標記點擊事件。標記位置從數據庫中設置,並使用FOR循環顯示在地圖上。 –

0

我覺得下面的方法可以幫助你:

正如其他人所說,你可以設置一個OnMarkerClickListener到標記,以對標記點擊事件,並使用URL添加發射活動,是指here。 因此,您可以將活動網址存儲在數據庫中。 當動態創建標記時,維護其關鍵將爲Marker類的對象的映射,並且值將爲String的URL。

如此,裏面onMarkerClick()方法:

@Override 
public boolean onMarkerClick(Marker marker) { 
    String activityUrl = markerURLMap.get(marker); 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(activityUrl)); 
    startActivity(intent); 
} 
0

爲了安裝每點擊標記唯一的網址,你需要如下附加您內Marker.Tag標籤的對象:

UrlObject url = new UrlObject() 
       { 
        Url = "enteryoururlhere" 
       }; 
marker.Tag = UrlObject; 

然後,您將通過呼叫以下內容獲取每個標記唯一的網址:

public boolean onMarkerClick(Marker marker) { 
     UrlObject obj = marker.Tag; 
     String activityUrl = obj.Url; 
     Intent intent = new Intent(Intent.ACTION_VIEW, 
     Uri.parse(activityUrl)); 
     startActivity(intent); 
    } 

你UrlObject類將是易於安裝:

class UrlObject : Java.Lang.Object 
    { 
      public string Url { get; set; } 
    } 

編輯:你會做標記,在你的每一個循環的標記。這樣,當每個標記被創建時,它都被正確地標記爲每個url。

相關問題