0

我有很多数据要显示在谷歌地图上,但我想要的只是将那些落入谷歌地图当前可见空间的元素。这个怎么做?提供一些有用的教程链接。

任何帮助将不胜感激。

4

2 回答 2

3

请检查此链接:https ://github.com/ketankpatel/android/tree/master/PinDropAnimation

它会在可见区域中放置大头针。

片段在这里:

private void putEventOverlay() {

        if (mapData.getZoomLevel() < 3) {
            mapData.getController().setZoom(3);

        }
        final MyLocationOverlay myLocationOverlay = new MyLocationOverlay(HomeActivity.this, mapData);
        mapData.getOverlays().add(myLocationOverlay);
        myLocationOverlay.enableMyLocation();

        GeoPoint center = mapData.getMapCenter();
        Integer latspan = mapData.getLatitudeSpan();
        Integer lonspan = mapData.getLongitudeSpan();
        Integer maxLat = center.getLatitudeE6() + (latspan / 2);
        Integer maxLon = center.getLongitudeE6() + (lonspan / 2);
        Integer minLat = center.getLatitudeE6() - (latspan / 2);
        Integer minLon = center.getLongitudeE6() - (lonspan / 2);

        double maxLatitude, minLatitude, maxLongitude, minLongitude;

        maxLatitude = maxLat / 1E6;
        minLatitude = minLat / 1E6;
        maxLongitude = maxLon / 1E6;
        minLongitude = minLon / 1E6;

        Drawable marker = getResources().getDrawable(R.drawable.marker);
        EventDetailModel tempDetailModel = null;
        ArrayList<EventDetailModel> tempDetailList = dbHelper.getMapSortedEventData(minLatitude, maxLatitude, minLongitude,maxLongitude);

        if (tempDetailList.size() != 0) {
            mapData.getOverlays().clear();
        }
        for (int i = 0; i < tempDetailList.size(); i++) {
            tempDetailModel = (EventDetailModel) tempDetailList.get(i);
            MapItemizedOverlay itemizedOverlay = new MapItemizedOverlay(marker);
            itemizedOverlay.addOverlay(HomeActivity.this, tempDetailModel);
            mapData.getOverlays().add(itemizedOverlay);
        }

        mapData.invalidate();

    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {

        if (ev.getAction() == MotionEvent.ACTION_UP) {

            putEventOverlay();
        }
        return super.dispatchTouchEvent(ev);
    }
  • 万迪
于 2012-10-17T10:39:28.727 回答
0

我假设“大量数据”是指要绘制的一些标记。获取当前地图边界。在循环数据、添加标记时,使用 bounds.contains() 查看标记的位置是否可见。如果是这样,请将其添加到地图中。

于 2012-10-17T10:07:00.213 回答