我有来自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只提供静态添加标记数据
答案 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的帖子:
答案 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));
}