1

GoogleMaps を使用してアプリを開発していますが、ItemizedOverlay で問題が発生しました。オーバーレイは正しく表示されますが、画面がタッチされた場合にのみ各変更が表示されます。私はAndroidを初めて使用するので、これはオーバーレイの問題ではなく、mapView自体の問題である可能性があることを知っていますが、Webで答えを検索してもこれを理解できませんでした. 事前に感謝します!

私のコードがあります:(私が例で見たものからのすべてが普通です)

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);

        map = (MapView) findViewById(R.id.mapview);
        map.setBuiltInZoomControls(true);

        Drawable markerDefault = this.getResources().getDrawable(
                R.drawable.star_icon);
        markerDefault = resize(markerDefault, 50);
        Drawable myselfIcon = this.getResources().getDrawable(
                R.drawable.myself2);
        myselfIcon = resize(myselfIcon, 50);

        itemizedOverlay = new GroupLocationOverlay(markerDefault, myselfIcon,
                this);
        map.getOverlays().add(itemizedOverlay);
}

private class GroupLocationOverlay extends ItemizedOverlay<OverlayItem> {
        Drawable myIcon;
        private int numOfMembers = 0;
        HashMap<String, Integer> nameTable = new HashMap<String, Integer>();
        HashMap<Integer, OverlayItem> overlays = new HashMap<Integer, OverlayItem>();

        public GroupLocationOverlay(Drawable icon, Drawable self,
                Context context) {
            super(boundCenterBottom(icon));
            ctxt = context;
            myIcon = self;
            populate();
        }

        public void clear() {
            nameTable.clear();
            overlays.clear();
            numOfMembers = 0;
            setLastFocusedIndex(-1);
            populate();
        }

        public void addItem(double lat, double lng, String id, String time) {
            GeoPoint point = new GeoPoint((int) (1E6 * lat), (int) (1E6 * lng));
            OverlayItem item = new OverlayItem(point, id, time);

            if (id.equals(identity)) {
                item.setMarker(boundCenterBottom(myIcon));
            }

            Integer index = nameTable.get(id);
            if (index == null) {// new member
                index = Integer.valueOf(numOfMembers++);
                nameTable.put(id, index);
            }
            overlays.put(index, item);
            setLastFocusedIndex(-1);
            populate();
        }

        @Override
        protected OverlayItem createItem(int index) {
            Integer i = Integer.valueOf(index);
            return overlays.get(i);
        }

        @Override
        public int size() {
            return numOfMembers;
        }
    }
}
4

0 に答える 0