14

私はデータベースからlat&long値を持っています。androidgooglemap api v2を使用してlat&long値に基づいてマーカーを表示する方法。元のandroid googleマップでは、コンセプトitemoverlayに基づいてマーカーを表示します。v2では、マーカーの表示方法がわかりません。

    dbAdapter.open();
        Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude,
                Btmlft_longitude, toprgt_longitude, gridsize1);
        int c = points.getCount();
        Log.d("count of points", "" + c);

        if (points != null) {
            if (points.moveToFirst()) {
                do {

                    int latitude = (int) (points.getFloat(points
                            .getColumnIndex("LATITUDE")) * 1E6);
                    int longitude = (int) (points.getFloat(points
                            .getColumnIndex("LONGITUDE")) * 1E6);

                    mapView.addMarker(new MarkerOptions().position(
                            new LatLng(latitude, longitude)).icon(
                            BitmapDescriptorFactory.defaultMarker()));

                } while (points.moveToNext());

            }
        }
        points.close();
        dbAdapter.close();

これがmycodeです。データベースからlat&long値を取得していますが、lat&long値に基づいてマーカーをマップに追加する方法。

私はアンドロイドグーグルマップAPIv2を読みました。それは静的に追加されたマーカーのデータだけを与えています

4

3 に答える 3

27

マーカークラスを使用する

マップの表面の特定のポイントに配置されたアイコン。マーカーアイコンは、マップの表面ではなく、デバイスの画面に対して向けて描画されます。つまり、マップの回転、傾斜、またはズームによって必ずしも向きが変わるとは限りません。

マーカーには次のプロパティがあります。

アンカー

マーカーのLatLng位置に配置される画像上のポイント。これは、デフォルトで画像の左側と画像の下部から50%になります。

ポジション

マップ上のマーカーの位置のLatLng値。マーカーを移動したい場合は、いつでもこの値を変更できます。

タイトル

ユーザーがマーカーをタップしたときに情報ウィンドウに表示されるテキスト文字列。この値はいつでも変更できます。

スニペット

タイトルの下に表示される追加のテキスト。この値はいつでも変更できます。

アイコン

マーカーに表示されるビットマップ。アイコンを未設定のままにすると、デフォルトのアイコンが表示されます。defaultMarker(float)を使用して、デフォルトアイコンの代替色を指定できます。マーカーを作成した後は、アイコンを変更することはできません。

ドラッグステータス

ユーザーがマーカーをドラッグできるようにする場合は、このプロパティをtrueに設定します。この値はいつでも変更できます。デフォルトはtrueです。

可視性

デフォルトでは、マーカーが表示されます。マーカーを非表示にするには、このプロパティをfalseに設定します。この値はいつでも変更できます。

GoogleMap map = ... // get a map.
   // Add a marker at San Francisco.
   Marker marker = map.addMarker(new MarkerOptions()
       .position(new LatLng(37.7750, 122.4183))
       .title("San Francisco")
       .snippet("Population: 776733"));
于 2013-01-07T11:35:08.833 に答える
12

GoogleMap.addMarker(MarkerOptions); 私のブログのチュートリアルでこれを説明し た方法を使用する必要があります:http: //bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

このブログには、新しいMapsAPIに関するその他の投稿がいくつかあります。

  • マップを現在の場所またはある場所に移動します
  • カスタムインフォウィンドウを作成する
  • 地理データまたはオブジェクトをマーカーに関連付けます
于 2013-01-07T23:53:51.503 に答える
4

問題は、緯度/経度の値を1E6で割るのではなく、1E6で乗算していることだと思います。保存した値がGeoPointsからのものである場合は、それが問題である可能性があります。それ以外の場合は、マーカーを追加する方法は問題なく、機能するはずです。

つまり、新しいLatLng()に渡すlat / lng値は、45400000、-95500000ではなく45.4、-95.5のようになります。

次のコードを確認してください。

//mMap is a GoogleMap and point is a GeoPoint
this.mMap.addMarker(getMarker(point, drawableId))

..。

public MarkerOptions getMarker(GeoPoint point, int drawableId)
{
    return new MarkerOptions()
    .position(new LatLng(point.getLatitudeE6() / 1000000.0, point.getLongitudeE6() / 1000000.0))
    .icon(BitmapDescriptorFactory.fromResource(drawableId));
}
于 2013-01-07T16:33:04.180 に答える