Android 剪裁或删除google maps v2多段线的某些部分
我已经为不同的点绘制了多段线,如图所示。Android 剪裁或删除google maps v2多段线的某些部分,android,google-maps-markers,google-maps-api-2,google-polyline,Android,Google Maps Markers,Google Maps Api 2,Google Polyline,我已经为不同的点绘制了多段线,如图所示。 中心视图:-(圆形) **标记代码**: viewIntermediateMarker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)) .inflate(R.layout.layout_intermediate_marker, null); middlemarker = map.addMarker(new MarkerOptions(
中心视图:-(圆形) **
标记代码**
:
viewIntermediateMarker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.layout_intermediate_marker, null);
middlemarker = map.addMarker(new MarkerOptions()
.position(MIDDLE)
.snippet(String.valueOf(MIDDLE))
.icon(BitmapDescriptorFactory
.fromBitmap(SearchNearByCourseActivity
.createDrawableFromView(mContext,
viewIntermediateMarker))));
多段线
(白色):
poly_TToMid = map.addPolyline(new PolylineOptions()
.add(MIDDLE_MARKER, TEE_POINT).width(3)
.color(Color.WHITE));
poly_MidToFlage = map.addPolyline(new PolylineOptions()
.add(MIDDLE_MARKER, upperSquMidLat).width(3)
.color(Color.GREEN));
多段线
(绿色):
poly_TToMid = map.addPolyline(new PolylineOptions()
.add(MIDDLE_MARKER, TEE_POINT).width(3)
.color(Color.WHITE));
poly_MidToFlage = map.addPolyline(new PolylineOptions()
.add(MIDDLE_MARKER, upperSquMidLat).width(3)
.color(Color.GREEN));
但是我想让我的图像1成为图像2,即我想删除(修剪)圆心内的多段线(绿色和白色),如下图所示。
请给出一些答案,说明如何在android
GoogleMapv2API
中实现这一点。非常感谢您的帮助……这是一个相当大的问题,实施起来并不那么容易。至少我想不出任何简单的方法
这一困难背后的主要原因是不断变化的缩放级别。在不同的缩放级别,标记下方的多段线位于不同的位置,因为地图米/像素密度会发生变化
实现这一目标的一种方法是:
计算标记的半径,并根据当前缩放级别以米为单位获取半径。然后循环通过多段线点并检查距离,如下所示:
List<LatLng> points = polyline.getPoints();
LatLng latLng = points.get(0);
// Get the starting point's lat lng coordinates
Location startLoc = new Location("Test");
startLoc.setLatitude(latLng.latitude);
startLoc.setLongitude(latLng.longitude);
for (int i=1; i<points.size(); i++) {
Location loc = new Location("Test");
loc.setLatitude(points.get(i).latitude);
loc.setLongitude(points.get(i).longitude);
float distance = startLoc.distanceTo(loc);
if (distance >= radiusInMeters) {
polyline.setPoints(points.subList(i, points.size()));
break;
}
}
您还可以在快照上使用更高级的方法getPixels
,获取背景片段
注:
- 这两种方法都要求您在缩放级别更改时重新绘制标记和/或多段线,因此,如果您有很多标记,我的建议是重新考虑您的策略
- 也许可以先使用实心背景标记或以不同的方式绘制多段线