25

新しいGoogleMapsAndroid API v2のマーカーにオブジェクトを追加するにはどうすればよいですか?では、をクリックするInfoWindowと、オブジェクトを使って何かを行うことができますか?

public void addSpotOnMap(Spot spot) {
    getMap().addMarker(new MarkerOptions()
            .position(new LatLng(spot.getParseGeoPoint().getLatitude(), spot.getParseGeoPoint().getLongitude()))
            .title(spot.getName())
            .snippet(spot.getCategory())
            .draggable(false));

}

これにより、オブジェクトの場所、タイトル、およびスニペットが設定されます。ただし、この特定のスポットオブジェクトをクリックすると、別のアクティビティに移動できるようになります。InfoWindow

4

4 に答える 4

38

これが正解かどうかはわかりませんが、この問題について私が作成したこのブログ投稿をご覧ください。

であるため、これMarkerは、データをでfinalリンクすることで簡単に解決できます。たとえば、またはMarkerMapHashMap<Marker, YourDataClass>HashMap<Marker, String>

これがすべてを説明するチュートリアルです:http: //bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

于 2012-12-16T15:17:29.770 に答える
24

Playサービスv9.4.0以降、マーカーに直接任意のオブジェクトを設定できるようになりました。

データを保存するには:

Marker marker = getMap().addMarker(new MarkerOptions()
        .position(lat, lng)
        .title(spot.getName());

CustomObject myData = new CustomObject();
marker.setTag(myData);

次に、データを取得するには:

CustomObject myRestoredData = (CustomObject)marker.getTag(myData);

マーカーデータの詳細については、こちらのドキュメントをご覧ください。

于 2016-10-28T09:49:59.640 に答える
1

android-maps-extensionsのライブラリを試してみてください。ここで、setdataメソッドでマークするオブジェクトを追加し、メソッドgetDataを呼び出してデータを取得できます。

続きを読む

Object getData() and setData(Object) on Marker, Circle, GroundOverlay, Polygon, Polyline or TileOverlay

GradleからGooglePlayサービスの任意のバージョンを使用できます

dependencies {
    compile 'com.androidmapsextensions:android-maps-extensions:2.2.0'
    compile 'com.google.android.gms:play-services-maps:8.1.0'
}
于 2015-12-01T12:25:02.213 に答える
0

次のように、オブジェクトをマップに追加した後、マーカー内でオブジェクトをバインドできます。

MarkerOptions markerOptions = new MarkerOptions().position(YOUR_LANG_LAT).title(YOUR_TITLE);
Marker addedMarker = mMap.addMarker(markerOptions);
CustomObject obj = new CustomObject();
addedMarker.setTag(obj);

次に、マップをクリックして、たとえば、オブジェクトを次のように取得できます。

mMap.setOnMarkerClickListener(marker -> {
    CustomObject obj = (CustomObject) marker.getTag();

    return false;
});
于 2020-06-12T22:55:29.400 に答える