我正在开发一个用户绘制多边形的应用程序。我有一套LatLng。现在我想显示属于LatLng集的所有标记。所有不属于我想要删除它的标记。我附上了一张图片。我怎样才能实现这一目标。在此先感谢。
static final LatLng HAMBURG = new LatLng(53.558, 9.927);
static final LatLng cz1 = new LatLng(53.600, 9.927);
static final LatLng KIEL = new LatLng(53.551, 9.993);
private GoogleMap map;
private CameraPosition cameraPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
.title("Hamburg"));
Marker cz = map.addMarker(new MarkerOptions().position(cz1)
.title("cz"));
Marker kiel = map.addMarker(new MarkerOptions()
.position(KIEL)
.title("Kiel")
.snippet("Kiel is cool")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));
// Move the camera instantly to hamburg with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));
Button button = (Button) findViewById(R.id.map_button);
button.setOnClickListener(this);
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
map.setOnCameraChangeListener(this);
}
@Override
public void onCameraChange(CameraPosition arg0) {
cameraPosition = arg0;
}
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FreeDrawActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("position", cameraPosition);
intent.putExtras(bundle);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
super.onActivityResult(arg0, arg1, arg2);
if (arg2 != null) {
Draw_Map((ArrayList<LatLng>) arg2.getSerializableExtra("result"));
}
}
public void Draw_Map(ArrayList<LatLng> val) {
PolygonOptions rectOptions = new PolygonOptions();
rectOptions.addAll(val);
rectOptions.strokeColor(Color.BLUE);
rectOptions.strokeWidth(7);
rectOptions.fillColor(Color.argb(125, 255, 255, 255));
Polygon polygon = map.addPolygon(rectOptions);
}
答案 0 :(得分:0)
如果我理解你的问题,你想确定一个点(即“标记”)是否在用户绘制的给定多边形的内部或外部。在这种情况下,您需要实现此算法http://en.wikipedia.org/wiki/Point_in_polygon。
答案 1 :(得分:0)
要检查,给定的latlng属于一组latlng。然后,您需要使用google开发人员Download from here提供的PolyUtil库。并使用
PolyUtil.containsLocation(LatLng Object, set of lat lng, boolean)
如果给定的latlng属于latlngs集,则此方法返回true。其他明智的错误
代表: -
if(PolyUtil.containsLocation(KIEL, val, false)) {
kiel = map.addMarker(new MarkerOptions()
.position(KIEL)
.title("Kiel")
.snippet("Kiel is cool")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));
}