使用android google maps v2添加标记到地图的代码

时间:2013-01-07 11:24:21

标签: android google-maps-android-api-2

我有来自database.how的lat& long值,使用android google map 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值添加标记来映射。

我阅读了android google maps api v2.In只提供静态添加标记数据

3 个答案:

答案 0 :(得分: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"));

答案 1 :(得分:12)

您必须使用方法GoogleMap.addMarker(MarkerOptions); 我在博客的教程中解释过这个: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

在此博客上,您会找到更多有关新Maps API的帖子:

  • 将地图移至当前位置或某个位置
  • 创建自定义InfoWindow
  • 将地理数据或对象与标记相关联

答案 2 :(得分:4)

我猜测问题是你将纬度/经度值乘以1E6而不是将它们除以1E6。如果您的存储值来自GeoPoints,那可能就是您的问题。否则,你添加标记的方式很好,应该可以工作。

即。传递给新LatLng()的lat / lng值应该看起来像45.4,-95.5 NOT 45400000,-95500000

查看以下代码:

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