2017-10-04 6 views
0

データベースを使って動的に複数のマーカーでGoogleマップを作成しましたが、それぞれのマーカーを個別にクリックする方法を教えてもらえますか?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

ありがとう、ありがとう、私はC#コードXamarin Javaを使用して、そのJavaコードを使用する必要があります。 –

0

あなたは、このためのXamarinのコードを探している場合は、以下では、これはあなたがこれはあなたを助けxamarin Androidのホープの両方のマーカーとマーカー情報ウィンドウのクリックイベントを処理する方法であるあなたがそれを行う方法

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) 
    { 

    } 

です。

+0

ありがとうございます、あなたのコードは私がすでに行っている一つのマーカー値です。以下のコードを使用してください: MarkerOptions options = new MarkerOptions()。SetPosition(latlng).SetTitle(dt.Rows [i] ["rating"]。ToString()+ ":クリックして"); GMap.AddMarker(options); GMap = googleMap; –

+0

だから、コードに複数のマーカーを挿入したいと思っています。 @PrashantBhatt –

+0

はい、私たちのGoogleマップ画面には複数のマーカーがあり、すべてのマーカーに対して個々のマーカークリックイベントが必要です。マーカーの位置はデータベースから設定され、FORループを使用してマップ上に表示されます。 –

0

私は、下記のアプローチはあなたを助けるかもしれないと思う:

他の人が言ったように、あなたがhereを参照し、マーカークリックでイベントを実行し、URLを使用して、起動アクティビティを追加するために、マーカーにOnMarkerClickListenerを設定することができます。 アクティビティのURLをDBに保存することもできます。 マーカーを動的に作成する場合は、オブジェクトのキーがMarkerクラスのマップを維持し、値はURLのStringになります。そう

onMarkerClick()メソッド内:

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

:マーカーをクリックするごとに一意のURLを取り付けるために

@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内のタグオブジェクトを添付する必要があります次に、次を呼び出して各マーカーに固有のURLを取得します。

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で適切にタグ付けされます。

関連する問題