如何在地图上使用拖放标记绘制“常规形状”多边形Android地图?

时间:2018-10-30 10:51:18

标签: android

无论单击地图的顺序如何,我都希望使用拖放标记创建规则的多边形形状。目前,如果按以下方式单击地图上的多边形以绘制多边形,那么我将面临一个问题,那就是按左上方,右上方,右下方,右下方的顺序工作。如果保持此顺序,则绘制的多边形也非常完美,如果我单击右上,左上,右下,右上角,则绘制的多边形也都非常好。如果当我按顺序更改一个品脱时,它无法绘制适当形状的多边形。

@Override
            public void onMarkerDrag(Marker marker) {
                Geocoder gc = new Geocoder(MainActivity.this);
                LatLng ll = marker.getPosition();
                double lat = ll.latitude;
                double lng = ll.longitude;
                //LatLng latlng = new LatLng(lat, lng);

                List<Address> list = null;
                try {
                    list = gc.getFromLocation(lat, lng, 1);
                } catch (IOException e) {
                    e.printStackTrace();
                }

                if (list != null) {
                    Address add = list.get(0);
                    marker.setTitle(add.getLocality());
                    marker.showInfoWindow();
                    String id = marker.getId();
                    marker.setTag(id);
                }

                for (int i = 0; i < markers.size(); i++) {
                    if (markers.get(i).getId().equalsIgnoreCase(marker.getId())) {

                        int position1 = getMarkerId(i);
                        positions.set(position1, ll);
                        markers.set(position1, marker);

                    } else {
                        Log.i("TAGG", "tag" + markers.get(i).getId() + " " + marker.getId());

                    }
                }


                drawPolygon();

                String s = String.valueOf(SphericalUtil.computeArea(positions));
                Double doubleString = Double.parseDouble(s);
                String str = String.valueOf(Math.round(doubleString));
                tvArea.setText(str);
                tvm2.setEnabled(true);
            }

0 个答案:

没有答案