5

大家好,

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

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

4

2 回答 2

9

GoogleMap没有触摸侦听器,因此您必须onTouchEvent覆盖MapFragment. 获得触摸事件的屏幕坐标后,您可以使用Projection(Doc here ) 获取 Lat/Long。简单地做

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

WherepointPoint描述你的触摸事件的位置。

一旦你LatLng描述了你的触摸事件,你可以使用Circle或绘制形状Polygon。谷歌关于绘制形状的教程将比我更好地解释它:Shapes - Google Maps v2

希望这可以帮助!

于 2013-05-23T19:04:42.983 回答
2

我已经使用地图的 OnMapClickListener 完成了它:

private boolean drawing = false;
private Polygon polygon;
private List<LatLng> points = new ArrayList<>();

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);
    }
  }
}
于 2016-05-17T02:25:19.213 回答