在地图视图上绘制多边形 +安卓

发布于 2024-10-31 03:29:27 字数 334 浏览 3 评论 0原文

我想在地图视图上绘制一个多边形。就像,我有许多地理点,然后使用这些地理点,我想绘制一个具有 n 个顶点的多边形。

谢谢!!

更新:

感谢freza,现在我知道如何绘制叠加层。

覆盖类下还有另一个函数:public boolean onTap(GeoPoint p, MapView mapView)。现在我想要的是当用户点击任何叠加层时,我想更改叠加层的图像。

例如,最初我画了一个简单的绿色圆圈来显示叠加。所以现在当用户点击绿色叠加层时:我想将颜色更改为红色或在绿色圆圈的适当位置绘制一个新的位图。我该怎么做?

I want to draw a polygon on the map view. It is like, i have a n number of GeoPoints and then using those geopoints, i want to draw a polygon with n vertices.

thanks!!

Update:

thanks to freza, now i know how to draw a overlay.

There is an another function under overlay class : public boolean onTap(GeoPoint p, MapView mapView). Now what i want is when user tap on any overlay, i want to change the image of the overlay.

For example, initially i have drawn a simple green circle for displaying overlay. So now when user taps on that green overlay: i want to change the color to red or draw a new bitmap in place if green circle. How can i do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清泪尽 2024-11-07 03:29:27

这可以帮助你。
代码如下:

          private void changeMarkers(int noteIndex) {
    for (int i = 0; i < noteOverlays.size(); i++) {
        if (i == noteIndex || noteIndex == -1) {
            Drawable selectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map);
            int selectedMarkerWidth = selectedMarker.getIntrinsicWidth();
            int selectedMarkerHeight = selectedMarker.getIntrinsicHeight();
            selectedMarker.setBounds(-selectedMarkerWidth / 2,
                    -selectedMarkerHeight, selectedMarkerWidth / 2, 0);         noteOverlays.getItem(i).setMarker(selectedMarker);
        } else {
            Drawable unselectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map_notselected);
            int nonSelectedMarkerWidth = unselectedMarker
                    .getIntrinsicWidth();
            int nonSelectedMarkerHeight = unselectedMarker
                    .getIntrinsicHeight();
            unselectedMarker
                    .setBounds(-nonSelectedMarkerWidth / 2,
                            -nonSelectedMarkerHeight,
                            nonSelectedMarkerWidth / 2, 0);
            noteOverlays.getItem(i).setMarker(unselectedMarker);
        }
    }
    mapView.invalidate();
}

This can help you.
code follows:

          private void changeMarkers(int noteIndex) {
    for (int i = 0; i < noteOverlays.size(); i++) {
        if (i == noteIndex || noteIndex == -1) {
            Drawable selectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map);
            int selectedMarkerWidth = selectedMarker.getIntrinsicWidth();
            int selectedMarkerHeight = selectedMarker.getIntrinsicHeight();
            selectedMarker.setBounds(-selectedMarkerWidth / 2,
                    -selectedMarkerHeight, selectedMarkerWidth / 2, 0);         noteOverlays.getItem(i).setMarker(selectedMarker);
        } else {
            Drawable unselectedMarker = getResources().getDrawable(
                    R.drawable.note_in_map_notselected);
            int nonSelectedMarkerWidth = unselectedMarker
                    .getIntrinsicWidth();
            int nonSelectedMarkerHeight = unselectedMarker
                    .getIntrinsicHeight();
            unselectedMarker
                    .setBounds(-nonSelectedMarkerWidth / 2,
                            -nonSelectedMarkerHeight,
                            nonSelectedMarkerWidth / 2, 0);
            noteOverlays.getItem(i).setMarker(unselectedMarker);
        }
    }
    mapView.invalidate();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文