【问题标题】:code to add markers to map using android google maps v2使用 android google maps v2 向地图添加标记的代码
【发布时间】:2013-01-07 11:24:21
【问题描述】:

我有来自数据库的 lat&long 值。如何使用 android google map api v2 显示基于 lat&long 值的标记。在原始的 android google maps 中,我们基于概念 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();

这是我的代码。我正在从数据库中获取lat&long 值,但是如何根据 lat&long 值添加标记到地图。

我阅读了仅提供静态添加的标记数据

的android google maps api v2.In

【问题讨论】:

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


    【解决方案1】:

    使用 Marker 类

    放置在地图表面上特定点的图标。标记图标是针对设备屏幕而不是地图表面绘制的;即,它不一定会因地图旋转、倾斜或缩放而改变方向。

    标记具有以下属性:

    锚点

    图像上将放置在标记的 LatLng 位置的点。这默认为图像左侧和图像底部的 50%。

    位置

    标记在地图上的位置的 LatLng 值。如果要移动标记,可以随时更改此值。

    标题

    当用户点击标记时显示在信息窗口中的文本字符串。您可以随时更改此值。

    片段

    显示在标题下方的附加文本。您可以随时更改此值。

    图标

    为标记显示的位图。如果未设置图标,则会显示默认图标。您可以使用 defaultMarker(float) 指定默认图标的替代颜色。创建标记后,您将无法更改图标。

    拖动状态

    如果要允许用户拖动标记,请将此属性设置为 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"));
    

    【讨论】:

      【解决方案2】:

      你必须使用方法GoogleMap.addMarker(MarkerOptions); 我在博客上的教程中对此进行了解释: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

      在此博客上,您会发现更多关于新 Maps API 的帖子:

      • 将地图移动到当前位置或某个位置
      • 创建自定义信息窗口
      • 将地理数据或对象与标记相关联

      【讨论】:

        【解决方案3】:

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

        即您传递给 new 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));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-02
          相关资源
          最近更新 更多