如何使用谷歌地图V2触摸地图片段上的形状

时间:2013-05-23 11:57:34

标签: android google-maps

大家好,

我正在使用谷歌地图V2,我必须通过触摸它在地图片段上绘制一个形状。   即如果我在地图上旋转手指,就应该生成一个形状。   我遇到了问题,因为当我们触摸时,Google mapV2不会提供lat   地图。我没有必要点击MapV2所以点击监听器对我没用。

所以请分享任何想法或代码,以便从地图中获取纬度和经度   触摸它。这样我就可以通过触摸地图来绘制形状。

2 个答案:

答案 0 :(得分:9)

GoogleMap没有触控侦听器,因此您必须覆盖onTouchEvent的父视图MapFragment。获得触摸事件的屏幕坐标后,您可以使用Projection(文档here)获取Lat / Long。只需做

LatLng coords = mapFragment.getMap().getProjection().fromScreenLocation(point);

其中point是描述触摸事件位置的Point

一旦您有LatLng描述您的触摸事件,您就可以使用CirclePolygon绘制形状。 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);
    }
  }
}
相关问题