大家好,
我正在使用谷歌地图V2,我必须通过触摸它在地图片段上绘制一个形状。 即如果我在地图上旋转手指,就应该生成一个形状。 我遇到了问题,因为当我们触摸时,Google mapV2不会提供lat 地图。我没有必要点击MapV2所以点击监听器对我没用。
所以请分享任何想法或代码,以便从地图中获取纬度和经度 触摸它。这样我就可以通过触摸地图来绘制形状。
答案 0 :(得分:9)
GoogleMap
没有触控侦听器,因此您必须覆盖onTouchEvent
的父视图MapFragment
。获得触摸事件的屏幕坐标后,您可以使用Projection
(文档here)获取Lat / Long。只需做
LatLng coords = mapFragment.getMap().getProjection().fromScreenLocation(point);
其中point
是描述触摸事件位置的Point
。
一旦您有LatLng
描述您的触摸事件,您就可以使用Circle
或Polygon
绘制形状。 Google的绘图形状教程将比我更好地解释它:Shapes - Google Maps v2
希望这有帮助!
答案 1 :(得分:0)
我使用地图的OnMapClickListener:
完成了它private boolean drawing = false;
private Polygon polygon;
private List<LatLng> points;
public class AreasFragment extends mapFragment implements GoogleMap.OnMapClickListener {
@Override
public void onMapClick(LatLng point) {
points.add(point);
if(!drawing) {
map.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.flag))
.anchor(0.2f, 1.0f)
.position(point));
PolygonOptions rectOptions = new PolygonOptions()
.strokeWidth(2)
.fillColor(0x80000000)
.add(point);
polygon = map.addPolygon(rectOptions);
drawing = true;
}
else {
polygon.setPoints(points);
}
}
}