大家好,
我正在使用谷歌地图 V2,我必须通过触摸它在地图片段上绘制一个形状。即,如果我在地图上旋转手指,应该会生成一个形状。我遇到了问题,因为当我们触摸地图时,Google mapV2 不提供经纬度。我不需要点击 MapV2,所以点击监听器对我没有用。
所以请分享任何想法或代码,通过触摸它从地图中获取纬度和经度。这样我就可以通过触摸地图来绘制形状。
大家好,
我正在使用谷歌地图 V2,我必须通过触摸它在地图片段上绘制一个形状。即,如果我在地图上旋转手指,应该会生成一个形状。我遇到了问题,因为当我们触摸地图时,Google mapV2 不提供经纬度。我不需要点击 MapV2,所以点击监听器对我没有用。
所以请分享任何想法或代码,通过触摸它从地图中获取纬度和经度。这样我就可以通过触摸地图来绘制形状。
GoogleMap
没有触摸侦听器,因此您必须onTouchEvent
覆盖MapFragment
. 获得触摸事件的屏幕坐标后,您可以使用Projection
(Doc here ) 获取 Lat/Long。简单地做
LatLng coords = mapFragment.getMap().getProjection().fromScreenLocation(point);
Wherepoint
是Point
描述你的触摸事件的位置。
一旦你LatLng
描述了你的触摸事件,你可以使用Circle
或绘制形状Polygon
。谷歌关于绘制形状的教程将比我更好地解释它:Shapes - Google Maps v2
希望这可以帮助!
我已经使用地图的 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);
}
}
}