2013-01-07 57 views
13

我有经纬度&从数据库长显示标记基于纬度&长值使用android谷歌地图api v2.在原来的Android谷歌地图,我们显示基于标记在概念itemoverlay上。在v2中,我不知道如何显示标记。代码添加标记使用安卓谷歌地图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.I是从数据库中获取纬度&长期价值,但如何根据纬度&长值映射添加标记。

我读了谷歌Android地图API v2.In那些只给静态加入标记的数据

回答

26

使用标记

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

的标记具有以下属性:

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

位置

的标记在地图上的位置的经纬度值。如果您想移动标记,您可以随时更改此值。

标题

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

片段时显示的标题下方

附加文本。您可以随时更改此值。

图标

在随即出现的标志的位图。如果图标未设置,则显示默认图标。您可以使用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")); 
4

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

即传递给新的经纬度()纬度/经度值应该像45.4,-95.5不是4540万,-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)); 
}